00001
00058 package com.arcle.rmt.j2se.swing.vc.rqml;
00059
00060 import javax.swing.*;
00061
00062 import java.util.List;
00063 import java.util.Observable;
00064 import java.awt.Window;
00065 import java.awt.event.ActionEvent;
00066 import com.arcle.rmt.j2se.swing.ui.Form;
00067 import com.arcle.rmt.j2se.swing.ui.View;
00068 import com.arcle.rmt.j2se.swing.ui.MoreSwingUtilities;
00069 import com.arcle.rmt.j2se.swing.vc.ElementEdit;
00070 import com.arcle.rmt.j2se.model.RQMLDocument;
00071 import com.arcle.rmt.j2se.model.RQMLDocumentUpdateEvent;
00072 import com.arcle.rmt.rqml.RQMLFirstClass;
00073
00084 public class FirstClassEdit extends ElementEdit {
00088 protected FirstClassEdit(RQMLFirstClass elem) {
00089 if (elem == null) {
00090 throw new IllegalArgumentException("Parameter 'elem' cannot be null.");
00091 }
00092 _elem = elem;
00093 }
00094
00095
00096
00097
00098 public void update(Observable src, Object param) {
00099 final FirstClassEdit self = this;
00100 if (param instanceof RQMLDocumentUpdateEvent) {
00101 RQMLDocumentUpdateEvent evt = (RQMLDocumentUpdateEvent) param;
00102 if (evt.getElement() == getElement()) {
00103 switch (evt.getEventType()) {
00104 case RQMLDocumentUpdateEvent.ET_DELETING_ELEMENT:
00105
00106 removeAll();
00107 invalidate();
00108
00109 src.deleteObserver(this);
00110 setDocument(null);
00111 setDead(true);
00112 SwingUtilities.invokeLater(new Runnable() {
00113 public void run() {
00114
00115
00116 MoreSwingUtilities.disposeImmediateParent(self);
00117 }
00118 });
00119
00120 break;
00121 }
00122 }
00123 } else {
00124 super.update(src, param);
00125 }
00126 }
00127
00134 protected List createPanels() {
00135 List panels = createList();
00136 RQMLFirstClass elem = getElement();
00137 panels.add(new GeneralAttributes1(elem));
00138 panels.add(new GeneralAttributes2(elem));
00139 return panels;
00140 }
00141
00142
00143
00144
00148 protected RQMLFirstClass getElement() {
00149 return _elem;
00150 }
00151
00152
00153
00154
00158 protected Action createDeleteElementAction() {
00159 return new DeleteElementAction();
00160 }
00161
00162
00163
00164
00168 private RQMLFirstClass _elem;
00169
00170
00171
00172
00176 protected class DeleteElementAction extends AbstractAction {
00177 public DeleteElementAction() {
00178 super("Delete");
00179 }
00180
00181 public void actionPerformed(ActionEvent e) {
00182 int result = JOptionPane.showConfirmDialog(FirstClassEdit.this,
00183 "Do you really want to delete the element? This cannot be undone.",
00184 "Delete Element",
00185 JOptionPane.YES_NO_OPTION,
00186 JOptionPane.QUESTION_MESSAGE);
00187 if (result == JOptionPane.YES_OPTION) {
00188 RQMLDocument doc = (RQMLDocument) getDocument();
00189 RQMLFirstClass elem = getElement();
00190 doc.deleteElement(elem);
00191 }
00192 }
00193 }
00194 }