[Bprocessor-commit] gui/src/net/sourceforge/bprocessor/gui/actions ToolsJoinActionListener.java,NONE
Status: Pre-Alpha
Brought to you by:
henryml
From: Jesper P. <je...@us...> - 2005-07-11 08:42:10
|
Update of /cvsroot/bprocessor/gui/src/net/sourceforge/bprocessor/gui/actions In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22609 Added Files: ToolsJoinActionListener.java Log Message: Initial import --- NEW FILE: ToolsJoinActionListener.java --- //--------------------------------------------------------------------------------- // $Id: ToolsJoinActionListener.java,v 1.1 2005/07/11 08:41:59 jews Exp $ // // Copyright (c) 2005 The BProcessor Team (http://bprocessor.sourceforge.net) // Released under the Lesser GNU Public License v2.1 //--------------------------------------------------------------------------------- package net.sourceforge.bprocessor.gui.actions; import net.sourceforge.bprocessor.model.ConstructionSpace; import net.sourceforge.bprocessor.model.ConstructionSpaceFacade; import net.sourceforge.bprocessor.model.Element; import net.sourceforge.bprocessor.model.ElementFacade; import net.sourceforge.bprocessor.model.FunctionalSpace; import net.sourceforge.bprocessor.model.FunctionalSpaceFacade; import net.sourceforge.bprocessor.model.Part; import net.sourceforge.bprocessor.model.PartFacade; import net.sourceforge.bprocessor.model.Surface; import net.sourceforge.bprocessor.model.SurfaceFacade; import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.util.Collection; import java.util.Iterator; import java.util.Vector; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; import org.apache.log4j.Logger; /** * The tools->join action listener */ public class ToolsJoinActionListener implements ActionListener { /** The logger */ private static Logger log = Logger.getLogger(ToolsJoinActionListener.class); /** Functional spaces constant */ private static final String FUNCTIONAL_SPACES = "Functional spaces"; /** Construction spaces constant */ private static final String CONSTRUCTION_SPACES = "Construction spaces"; /** Surfaces constant */ private static final String SURFACES = "Surfaces"; /** Elements constant */ private static final String ELEMENTS = "Elements"; /** Parts constant */ private static final String PARTS = "Parts"; /** * ToolsJoinActionListener */ public ToolsJoinActionListener() { } /** * Action performed * @param e The action event */ public void actionPerformed(ActionEvent e) { final JFrame frame = new JFrame("Join"); final JComboBox leftSelector = new JComboBox(); final JList leftValues = new JList(); final JComboBox rightSelector = new JComboBox(); final JList rightValues = new JList(); leftSelector.addItem(SURFACES); leftSelector.addItem(ELEMENTS); leftSelector.addItem(PARTS); leftSelector.addItemListener(new LeftSelectorListener(leftSelector, leftValues, rightSelector)); Vector leftValuesData = new Vector(); SurfaceFacade sf = SurfaceFacade.getInstance(); Collection surfaces = sf.findAll(); Iterator it = surfaces.iterator(); while (it.hasNext()) { Surface s = (Surface)it.next(); leftValuesData.add(new ValueHolder(s.getId(), s.getName())); } leftValues.setListData(leftValuesData); JLabel l = new JLabel("->"); rightSelector.addItem(FUNCTIONAL_SPACES); rightSelector.addItem(CONSTRUCTION_SPACES); rightSelector.addItem(ELEMENTS); rightSelector.addItem(PARTS); rightSelector.addItemListener(new RightSelectorListener(rightSelector, rightValues)); Vector rightValuesData = new Vector(); FunctionalSpaceFacade fsf = FunctionalSpaceFacade.getInstance(); Collection fss = fsf.findAll(); it = fss.iterator(); while (it.hasNext()) { FunctionalSpace fs = (FunctionalSpace)it.next(); rightValuesData.add(new ValueHolder(fs.getId(), fs.getName())); } rightValues.setListData(rightValuesData); JButton ok = new JButton("Ok"); ok.addActionListener(new JoinAction(leftSelector, leftValues, rightSelector, rightValues, frame)); JButton cancel = new JButton("Cancel"); cancel.addActionListener(new ActionListener() { /** * Action performed * @param event The event */ public void actionPerformed(ActionEvent event) { frame.dispose(); } }); frame.getContentPane().setLayout(new GridLayout(3, 3)); JPanel p1 = new JPanel(); p1.setLayout(new BorderLayout()); p1.add(leftSelector, BorderLayout.SOUTH); frame.getContentPane().add(p1); frame.getContentPane().add(new JLabel("")); JPanel p2 = new JPanel(); p2.setLayout(new BorderLayout()); p2.add(rightSelector, BorderLayout.SOUTH); frame.getContentPane().add(p2); frame.getContentPane().add(new JScrollPane(leftValues), BorderLayout.CENTER); frame.getContentPane().add(l); frame.getContentPane().add(new JScrollPane(rightValues), BorderLayout.CENTER); JPanel p3 = new JPanel(); p3.setLayout(new BorderLayout()); p3.add(ok, BorderLayout.SOUTH); frame.getContentPane().add(p3); frame.getContentPane().add(new JLabel("")); JPanel p4 = new JPanel(); p4.setLayout(new BorderLayout()); p4.add(cancel, BorderLayout.SOUTH); frame.getContentPane().add(p4); frame.setSize(600, 400); frame.show(); } /** * Left selector listener */ class LeftSelectorListener implements ItemListener { /** The left selector */ private JComboBox leftSelector; /** The left values */ private JList leftValues; /** The right selector */ private JComboBox rightSelector; /** Last value */ private String last; /** * Constructor * @param leftSelector The left selector * @param leftValues The left list * @param rightSelector The right selector */ LeftSelectorListener(JComboBox leftSelector, JList leftValues, JComboBox rightSelector) { this.leftSelector = leftSelector; this.leftValues = leftValues; this.rightSelector = rightSelector; } /** * Item state changed * @param event The event */ public void itemStateChanged(ItemEvent event) { String current = (String)leftSelector.getSelectedItem(); if (!current.equals(last)) { Vector leftValuesData = new Vector(); if (current.equals(SURFACES)) { SurfaceFacade sf = SurfaceFacade.getInstance(); Collection surfaces = sf.findAll(); Iterator it = surfaces.iterator(); while (it.hasNext()) { Surface s = (Surface)it.next(); leftValuesData.add(new ValueHolder(s.getId(), s.getName())); } rightSelector.removeAllItems(); rightSelector.addItem(FUNCTIONAL_SPACES); rightSelector.addItem(CONSTRUCTION_SPACES); rightSelector.addItem(ELEMENTS); rightSelector.addItem(PARTS); } else if (current.equals(ELEMENTS)) { ElementFacade ef = ElementFacade.getInstance(); Collection elements = ef.findAll(); Iterator it = elements.iterator(); while (it.hasNext()) { Element e = (Element)it.next(); leftValuesData.add(new ValueHolder(e.getId(), e.getName())); } rightSelector.removeAllItems(); rightSelector.addItem(FUNCTIONAL_SPACES); rightSelector.addItem(CONSTRUCTION_SPACES); } else if (current.equals(PARTS)) { PartFacade pf = PartFacade.getInstance(); Collection parts = pf.findAll(); Iterator it = parts.iterator(); while (it.hasNext()) { Part p = (Part)it.next(); leftValuesData.add(new ValueHolder(p.getId(), p.getName())); } rightSelector.removeAllItems(); rightSelector.addItem(ELEMENTS); } leftValues.setListData(leftValuesData); last = current; } } } /** * Right selector listener */ class RightSelectorListener implements ItemListener { /** The right selector */ private JComboBox rightSelector; /** The right values */ private JList rightValues; /** Last value */ private String last; /** * Constructor * @param rightSelector The right selector * @param rightValues The right list */ RightSelectorListener(JComboBox rightSelector, JList rightValues) { this.rightSelector = rightSelector; this.rightValues = rightValues; } /** * Item state changed * @param event The event */ public void itemStateChanged(ItemEvent event) { String current = (String)rightSelector.getSelectedItem(); if (current != null && !current.equals(last)) { Vector rightValuesData = new Vector(); if (current.equals(FUNCTIONAL_SPACES)) { FunctionalSpaceFacade fsf = FunctionalSpaceFacade.getInstance(); Collection fss = fsf.findAll(); Iterator it = fss.iterator(); while (it.hasNext()) { FunctionalSpace fs = (FunctionalSpace)it.next(); rightValuesData.add(new ValueHolder(fs.getId(), fs.getName())); } } else if (current.equals(CONSTRUCTION_SPACES)) { ConstructionSpaceFacade csf = ConstructionSpaceFacade.getInstance(); Collection css = csf.findAll(); Iterator it = css.iterator(); while (it.hasNext()) { ConstructionSpace cs = (ConstructionSpace)it.next(); rightValuesData.add(new ValueHolder(cs.getId(), cs.getName())); } } else if (current.equals(ELEMENTS)) { ElementFacade ef = ElementFacade.getInstance(); Collection elements = ef.findAll(); Iterator it = elements.iterator(); while (it.hasNext()) { Element e = (Element)it.next(); rightValuesData.add(new ValueHolder(e.getId(), e.getName())); } } else if (current.equals(PARTS)) { PartFacade pf = PartFacade.getInstance(); Collection parts = pf.findAll(); Iterator it = parts.iterator(); while (it.hasNext()) { Part p = (Part)it.next(); rightValuesData.add(new ValueHolder(p.getId(), p.getName())); } } rightValues.setListData(rightValuesData); last = current; } } } /** * Join action */ class JoinAction implements ActionListener { /** The left selector */ private JComboBox leftSelector; /** The left values */ private JList leftValues; /** The right selector */ private JComboBox rightSelector; /** The right values */ private JList rightValues; /** The frame */ private JFrame frame; /** * Constructor * @param leftSelector The left selector * @param leftValues The left list * @param rightSelector The right selector * @param rightValues The right list * @param frame The frame */ JoinAction(JComboBox leftSelector, JList leftValues, JComboBox rightSelector, JList rightValues, JFrame frame) { this.leftSelector = leftSelector; this.leftValues = leftValues; this.rightSelector = rightSelector; this.rightValues = rightValues; this.frame = frame; } /** * Action performed * @param event The event */ public void actionPerformed(ActionEvent event) { String lsname = (String)leftSelector.getSelectedItem(); String rsname = (String)rightSelector.getSelectedItem(); ValueHolder lsvalue = (ValueHolder)leftValues.getSelectedValue(); ValueHolder rsvalue = (ValueHolder)rightValues.getSelectedValue(); if (lsvalue != null && rsvalue != null) { if (lsname.equals(SURFACES)) { SurfaceFacade sf = SurfaceFacade.getInstance(); Surface s = sf.findById(lsvalue.getId()); if (rsname.equals(FUNCTIONAL_SPACES)) { FunctionalSpaceFacade fsf = FunctionalSpaceFacade.getInstance(); FunctionalSpace fs = fsf.findById(rsvalue.getId()); fs.getSurfaces().add(s); } else if (rsname.equals(CONSTRUCTION_SPACES)) { ConstructionSpaceFacade csf = ConstructionSpaceFacade.getInstance(); ConstructionSpace cs = csf.findById(rsvalue.getId()); cs.getSurfaces().add(s); } else if (rsname.equals(ELEMENTS)) { ElementFacade ef = ElementFacade.getInstance(); Element e = ef.findById(rsvalue.getId()); e.getSurfaces().add(s); } else if (rsname.equals(PARTS)) { PartFacade pf = PartFacade.getInstance(); Part p = pf.findById(rsvalue.getId()); p.getSurfaces().add(s); } } else if (lsname.equals(ELEMENTS)) { ElementFacade ef = ElementFacade.getInstance(); Element e = ef.findById(lsvalue.getId()); if (rsname.equals(FUNCTIONAL_SPACES)) { FunctionalSpaceFacade fsf = FunctionalSpaceFacade.getInstance(); FunctionalSpace fs = fsf.findById(rsvalue.getId()); fs.getElements().add(e); } else if (rsname.equals(CONSTRUCTION_SPACES)) { ConstructionSpaceFacade csf = ConstructionSpaceFacade.getInstance(); ConstructionSpace cs = csf.findById(rsvalue.getId()); cs.getElements().add(e); } } else if (lsname.equals(PARTS)) { PartFacade pf = PartFacade.getInstance(); Part p = pf.findById(lsvalue.getId()); if (rsname.equals(ELEMENTS)) { ElementFacade ef = ElementFacade.getInstance(); Element e = ef.findById(rsvalue.getId()); e.getParts().add(p); } } } if (log.isDebugEnabled()) { log.debug("Joining: " + lsvalue + " with " + rsvalue); } frame.dispose(); } } /** * Value holder class */ class ValueHolder { /** The id */ private Long id; /** The name */ private String name; /** * Constructor * @param id The id * @param name The name */ ValueHolder(Long id, String name) { this.id = id; this.name = name; } /** * Get the id * @return The id */ Long getId() { return id; } /** * Get the name * @return The name */ String getName() { return name; } /** * String representation * @return The representation */ public String toString() { return name; } } } |