Main Page | Packages | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | Related Pages

ElementEdit.java

Go to the documentation of this file.
00001 
00058 package com.arcle.rmt.j2se.swing.vc;
00059 
00060 import javax.swing.*;
00061 import java.util.List;
00062 import java.util.Set;
00063 import java.util.HashSet;
00064 import java.util.Iterator;
00065 import java.util.Arrays;
00066 import java.util.LinkedList;
00067 import java.awt.Component;
00068 import java.awt.Container;
00069 import java.awt.BorderLayout;
00070 import java.awt.event.ActionEvent;
00071 import java.util.Iterator;
00072 import com.arcle.rmt.rqml.RQMLFirstClass;
00073 import com.arcle.rmt.j2se.swing.ui.View;
00074 import com.arcle.rmt.j2se.swing.ui.ComponentView;
00075 import com.arcle.rmt.j2se.swing.ui.MoreSwingUtilities;
00076 import com.arcle.rmt.j2se.swing.vc.rqml.ElementEditFactoryFacade;
00077 
00085 public abstract class ElementEdit extends ComponentView {
00086     protected ElementEdit() {  }
00087 
00088     //-----------------------------------------------------------------------
00089     // Overridden Methods
00090 
00095     protected void initChildren() {
00096         Iterator i;
00097         tabs = createTabbedPane();
00098         i = createPanels().iterator();
00099         while (i.hasNext()) {
00100             tabs.add((Component) i.next());
00101         }
00102     }
00103 
00107     protected void layoutChildren() {
00108         setLayout(new BorderLayout());
00109         add(tabs, BorderLayout.CENTER);
00110         add(getBottomRow(), BorderLayout.SOUTH);
00111     }
00112 
00113     //-----------------------------------------------------------------------
00114     // Accessor Methods
00115 
00123     protected List getCommandButtons() {
00124         List buttons = createList(); // to facilitate addition by subclasses.
00125         buttons.add(getCloseEditorButton());
00126         buttons.add(Box.createHorizontalGlue());
00127         buttons.add(getDeleteElementButton());
00128         return buttons;
00129     }
00130 
00140     protected AbstractButton getDeleteElementButton() {
00141         if (_deleteElementButton == null) {
00142             _deleteElementButton = new JButton(getDeleteElementAction());
00143         }
00144         return _deleteElementButton;
00145     }
00146 
00150     protected AbstractButton getCloseEditorButton() {
00151         if (_closeEditorButton == null) {
00152             _closeEditorButton = new JButton(getCloseEditorAction());
00153         }
00154         return _closeEditorButton;
00155     }
00156 
00162     protected Action getDeleteElementAction() {
00163         if (_deleteElementAction == null) {
00164             _deleteElementAction = createDeleteElementAction();
00165         }
00166         return _deleteElementAction;
00167     }
00168 
00172     protected Action getCloseEditorAction() {
00173         if (_closeEditorAction == null) {
00174             _closeEditorAction = createCloseEditorAction();
00175         }
00176         return _closeEditorAction;
00177     }
00178 
00182     protected Container getBottomRow() {
00183         if (_bottomRow == null) {
00184             _bottomRow = createBottomRow();
00185         }
00186         return _bottomRow;
00187     }
00188 
00189     //-----------------------------------------------------------------------
00190     // Factory Methods
00191 
00198     protected abstract List createPanels();
00199 
00204     protected JTabbedPane createTabbedPane() {
00205         return new JTabbedPane();
00206     }
00207 
00212     protected List createList() {
00213         return new LinkedList();
00214     }
00215 
00220     protected Container createBottomRow() {
00221         Container row = Box.createHorizontalBox();
00222         Iterator iter = getCommandButtons().iterator();
00223         while (iter.hasNext()) {
00224             row.add((Component) iter.next());
00225         }
00226         return  row;
00227     }
00228 
00233     protected abstract Action createDeleteElementAction();
00234 
00238     protected Action createCloseEditorAction() {
00239         return new CloseEditorAction();
00240     }
00241 
00242     //-----------------------------------------------------------------------
00243     // Static methods
00244 
00250     public static ElementEditFactory getFactory() {
00251         return ElementEditFactoryFacade.getInstance();
00252     }
00253 
00262     public static ElementEdit createElementEdit(RQMLFirstClass elem) {
00263         return getFactory().createElementEdit(elem);
00264     }
00265 
00266 
00267     //-----------------------------------------------------------------------
00268     // Member Variables
00269 
00273     private JTabbedPane tabs;
00274 
00278     private Container _bottomRow = null;
00279 
00283     private AbstractButton _deleteElementButton = null;
00284 
00288     private AbstractButton _closeEditorButton = null;
00289 
00293     private Action _deleteElementAction = null;
00294 
00298     private Action _closeEditorAction = null;
00299 
00300     //-----------------------------------------------------------------------
00301     // Inner classes
00302 
00306     protected class CloseEditorAction extends AbstractAction {
00307         public CloseEditorAction() {
00308             super("Close");
00309         }
00310 
00314         public void actionPerformed(ActionEvent e) {
00315             MoreSwingUtilities.disposeImmediateParent(ElementEdit.this);
00316         }
00317     }
00318 }
00319 

Generated on Fri Jun 18 19:51:20 2004 for Arcle Rambutan by doxygen 1.3.5