swing

HowIMet

New member
swing

אני צריך לממש מנגנון undo/redo קראתי את המימוש של undoManager אבל לא הצלחתי ליישם אותו בדיוק.
יש לי מסך עם כפתור שמוסיפים פאנלים באופן דינמי למסך. אם אני עושה undo אני מצפה שהכפתור ימחוק את הפאנל האחרון שהוסיף.
בנוסף במסך יש אפשרות לכתוב טקסט בתוך תיבת טקסט, לסמן checkBox ולבחור מcomboBox ואני צריך שהundo יחזיר את הבחירה האחרונה.
אני די אבוד ואשמח לעזרה
 

nocgod

New member
אני מקווה שהבנתי נכון את מה שתיארת

http://en.wikipedia.org/wiki/Memento_pattern

זו תבנית עיצוב שצועקת "use me use me use me"

אני כמובן מקווה שאני צודק...
בגדול הרעיון של התבנית עיצוב הוא: יש לך אובייקט A, ויש לך מעין מטפל של A נקרא לו B.
B רוצה לשנות את A אבל לשמור את האפשרות של לעשות rollback שמצב הקודם של A לפני השינוי. B יבקש מA אובייקט שנקרא memento, לפי הבנתי זה אובייקט שבעצם שומר את המצב הפנימי של האובייקט A. לאחר קבלת הmemento מ A אובייקט B יעשה את השינויים שלו, אם יהיה צריך לחזור אחורה בזמן, B יחזיר לA את הmemento וA ישתחזר...
 

yogevk

New member
חצי מסכים..

ממנטו אכן מתאימה לבעיה זו אבל כבדה מדי, ממנטו שומרת תמונת מצב של כל המערכת.
אני חושב שהתבנית של Command יותר מתאימה.
אפילו בפירוט שלה כתוב שזה חלק מהיעוד שלה.
 

nocgod

New member
שמע לפי מה שקראתי על התבנית

היא שומרת מצב של אובייקט, גודל האובייקט זה כבר משהו אחר.
אני מניח שיהיה חכם יותר לעשות את זה באמצעות command pattern ולשמור מערך של commands כאשר הcommand עצמו שומר את מה ששינה וכשאתה עושה undo אז הוא משחזר את מה ששינה.
 
למעלה