package org.infoobject.magicmap.node.ui.action; import com.jgoodies.forms.factories.ButtonBarFactory; import net.sf.magicmap.client.gui.utils.GUIUtils; import net.sf.magicmap.client.gui.utils.MagicAction; import net.sf.magicmap.client.gui.utils.MagicDialog; import net.sf.magicmap.client.gui.utils.OnSuccessCloseAction; import net.sf.magicmap.client.model.node.INodeModelSelectionListener; import net.sf.magicmap.client.model.node.Node; import net.sf.magicmap.client.model.node.NodeModelSelectionEvent; import net.sf.magicmap.client.utils.ExceptionHandler; import org.infoobject.magicmap.node.ui.CreateInformationObjectNodeView; import javax.swing.*; import java.awt.event.ActionEvent; /** * <p> * Class ShowCreateInformationObjectAction ZUSAMMENFASSUNG * </p> * <p> * DETAILS * </p> * * @author Jan Friderici * Date: 16.08.2008 * Time: 18:04:55 */ public class ShowCreateInformationObjectAction extends MagicAction implements INodeModelSelectionListener { private CreateInformationObjectNodeView view; private final JFrame frame; private Node selectedNode; /** * * @param view for the dilog * @param frame */ public ShowCreateInformationObjectAction(CreateInformationObjectNodeView view, JFrame frame) { super("Informationsobjekt anlegen"); this.view = view; this.frame = frame; } protected boolean checkSelection() { return selectedNode != null && selectedNode != Node.EMPTY_NODE && selectedNode.isPhysical(); } public void actionPerformed(ActionEvent event) { final MagicDialog dlg = new MagicDialog(this.frame); JPanel panel = new JPanel(); panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS)); panel.add(view.getView()); panel.add(Box.createHorizontalGlue()); OnSuccessCloseAction create = new OnSuccessCloseAction("Information anlegen",dlg) { protected void doAction(ActionEvent event) { dlg.lockDialog(); try { view.createInformation(); } finally { dlg.unlockDialog(); } } }; MagicAction close = new MagicAction("Abbrechen") { public void actionPerformed(ActionEvent event) { dlg.setVisible(false); dlg.dispose(); } }; create.attatch(view, "enabled"); create.setExceptionHandler(new ExceptionHandler() { public void handle(Exception e) { dlg.showError("<html><h2>Error Creating Information</h2><br>" + e.getMessage()+ "<html>"); e.printStackTrace(); } }); view.setSelectedNode(getSelectedNode()); dlg.setComponents(view.getView(), new JLabel("Warten...."), ButtonBarFactory.buildCenteredBar(new JButton(close), new JButton(create))); //view.selectNode(getSelectedNode()); dlg.pack(); GUIUtils.locateOnScreen(dlg); dlg.setVisible(true); } public void selectionChanged(NodeModelSelectionEvent event) { this.selectedNode = event.getSelectedNode(); setEnabled(checkSelection()); } protected Node getSelectedNode() { return selectedNode; } }