/******************************************************************* Copyright (c) 2001-2010 Apprisant Technologies Inc. All rights reserved. Apprisant Technologies permits non-exclusive royalty free use, copying and modification of this demo program source code for the purposes of evaluating the Apprisant Toolkit or building applications that use it. This software and documentation is provided "AS IS". APPRISANT TECHNOLOGIES DISCLAIMS ANY REPRESENTATIONS AND WARRANTIES, INCLUDING BUT NOT LIMITED TO ANY IMPLIED WARRANTY OF MERCHANTABILITY AND FITNESS OF THIS PRODUCT FOR ANY PARTICULAR PURPOSE. APPRISANT TECHNOLOGIES SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY ANY PARTY, INCLUDING LOST PROFITS, ARISING FROM THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ITS DERIVATIONS. ********************************************************************/ package project; import java.awt.*; import java.awt.event.*; import javax.swing.*; import apprisant.diagram.*; import apprisant.diagram.env.*; /* The main class for the Project demo. This class assembles the user interface. The diagram uses the demo's element model. */ public class Project extends JApplet { Diagram diagram; DiagramSelectionModel selectionModel; ProjectData dataModel; public void init() { setLayout(new BorderLayout()); try { // Properties file sets rendering hints AGEnvironment.loadProperties("project/project.properties"); // Diagram diagram = new Diagram("Project", new ProjectModel()); diagram.setBackground(new Color(255,252,250)); ViewManager viewMgr = diagram.getViewManager(); viewMgr.setMargin(new Dimension(20, 20)); // Renderers diagram.readRenderers("project/project.rdr"); } catch (AGException ae) { AGLog.log("Project", "init", AGLog.ERROR, ae); } // Selection model selectionModel = diagram.getSelectionModel(); selectionModel.setSelectionMode(SelectionParams.SINGLE); // Data model dataModel = new ProjectData(); diagram.setDataModel(dataModel); // Add the diagram to the applet add(new JScrollPane(diagram), BorderLayout.CENTER); // Button panel add(buildButtonPanel(), BorderLayout.SOUTH); } Box buildButtonPanel() { Box buttonPanel = new Box(BoxLayout.X_AXIS); JButton initButton = new JButton("Init"); buttonPanel.add(Box.createGlue()); buttonPanel.add(initButton); buttonPanel.add(Box.createHorizontalStrut(5)); initButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ev) { dataModel.initProjects(); } }); JButton addButton = new JButton("Add"); buttonPanel.add(addButton); buttonPanel.add(Box.createHorizontalStrut(5)); addButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ev) { dataModel.addProject(); } }); JButton removeButton = new JButton("Remove"); buttonPanel.add(removeButton); buttonPanel.add(Box.createHorizontalStrut(5)); removeButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ev) { Object key = selectionModel.getSingleSelection(); dataModel.removeProject(key); } }); JButton viewButton = new JButton("View"); buttonPanel.add(viewButton); buttonPanel.add(Box.createGlue()); return buttonPanel; } public static void main (String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { JApplet applet = new Project(); applet.init(); JFrame frame = new JFrame("Project Demo"); frame.setLocation(100, 100); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.add(applet, BorderLayout.CENTER); frame.pack(); frame.setVisible(true); } }); } }