summaryrefslogtreecommitdiff
path: root/projects/net.wotonomy.test/src/main/java/net/wotonomy/test/TreeInspectorController.java
diff options
context:
space:
mode:
Diffstat (limited to 'projects/net.wotonomy.test/src/main/java/net/wotonomy/test/TreeInspectorController.java')
-rw-r--r--projects/net.wotonomy.test/src/main/java/net/wotonomy/test/TreeInspectorController.java184
1 files changed, 184 insertions, 0 deletions
diff --git a/projects/net.wotonomy.test/src/main/java/net/wotonomy/test/TreeInspectorController.java b/projects/net.wotonomy.test/src/main/java/net/wotonomy/test/TreeInspectorController.java
new file mode 100644
index 0000000..8ec9554
--- /dev/null
+++ b/projects/net.wotonomy.test/src/main/java/net/wotonomy/test/TreeInspectorController.java
@@ -0,0 +1,184 @@
+package net.wotonomy.test;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+
+import javax.swing.AbstractButton;
+import javax.swing.JDialog;
+
+import net.wotonomy.foundation.NSArray;
+import net.wotonomy.ui.EOAssociation;
+import net.wotonomy.ui.EODisplayGroup;
+import net.wotonomy.ui.MasterDetailAssociation;
+import net.wotonomy.ui.swing.ListAssociation;
+import net.wotonomy.ui.swing.RadioPanelAssociation;
+import net.wotonomy.ui.swing.TextAssociation;
+import net.wotonomy.ui.swing.TreeAssociation;
+import net.wotonomy.ui.swing.util.WindowUtilities;
+
+/**
+* A simple editor panel with a few textfields.
+*/
+public class TreeInspectorController
+{
+ public TreeInspectorController( EODisplayGroup titlesGroup, EODisplayGroup childrenGroup )
+ {
+ final EODisplayGroup group = childrenGroup;
+// final EODisplayGroup group = titlesGroup;
+ final TreePanel treePanel = new TreePanel();
+
+ // text associations
+
+ EOAssociation ta;
+
+ ta = new TreeAssociation( treePanel.tree, "People" );
+ ta.bindAspect( EOAssociation.TitlesAspect, titlesGroup, "lastName" );
+ ta.bindAspect( EOAssociation.ChildrenAspect, group, "childList" );
+ ta.bindAspect( EOAssociation.IsLeafAspect, titlesGroup, "childCount" );
+// ta.bindAspect( EOAssociation.IsLeafAspect, null, "false" );
+ ta.establishConnection();
+ treePanel.tree.setEditable( true );
+
+ ta = new TextAssociation( treePanel.editPanel.firstNameField );
+ ta.bindAspect( EOAssociation.ValueAspect, group, "firstName" );
+ ta.establishConnection();
+
+ ta = new TextAssociation( treePanel.editPanel.middleNameField );
+ ta.bindAspect( EOAssociation.ValueAspect, group, "middleName" );
+ ta.establishConnection();
+
+ ta = new TextAssociation( treePanel.editPanel.lastNameField );
+ ta.bindAspect( EOAssociation.ValueAspect, group, "lastName" );
+ ta.establishConnection();
+
+ ta = new RadioPanelAssociation( treePanel.editPanel.yearRadioPanel );
+ ta.bindAspect( EOAssociation.ValueAspect, group, "createDate.year" );
+
+ EODisplayGroup yearTitles = new EODisplayGroup();
+ yearTitles.setObjectArray( new NSArray(
+ new Object[] { "1999", "2000", "2001" } ) );
+ ta.bindAspect( EOAssociation.TitlesAspect, yearTitles, "" );
+
+ EODisplayGroup yearObjects = new EODisplayGroup();
+ yearObjects.setObjectArray( new NSArray(
+ new Object[] { new Integer( 99 ), new Integer( 100 ), new Integer( 101 ) } ) );
+ ta.bindAspect( EOAssociation.ObjectsAspect, yearObjects, "" );
+
+ ta.establishConnection();
+
+ // detail group
+
+ final EODisplayGroup detailGroup = new EODisplayGroup();
+
+ ta = new MasterDetailAssociation( detailGroup );
+ ta.bindAspect( EOAssociation.ParentAspect, group, "childList" );
+ ta.establishConnection();
+
+ ta = new ListAssociation( treePanel.editPanel.list );
+ ta.bindAspect( EOAssociation.TitlesAspect, detailGroup, "fullName" );
+ ta.establishConnection();
+
+ // display group action associations
+
+ AbstractButton addButton = (AbstractButton)
+ treePanel.editPanel.addPanel.getButton( "Add" );
+ addButton.addActionListener( new ActionListener()
+ {
+ public void actionPerformed( ActionEvent evt )
+ {
+ detailGroup.insertObjectAtIndex( new TestObject(), 0 );
+ }
+ } );
+
+ AbstractButton removeButton = (AbstractButton)
+ treePanel.editPanel.addPanel.getButton( "Remove" );
+ removeButton.addActionListener( new ActionListener()
+ {
+ public void actionPerformed( ActionEvent evt )
+ {
+ if ( detailGroup.selectedObject() != null )
+ detailGroup.deleteSelection();
+ }
+ } );
+/*
+ AbstractButton refreshButton = (AbstractButton)
+ treePanel.editPanel.addPanel.getButton( "Refresh" );
+ refreshButton.addActionListener( new ActionListener()
+ {
+ int count = 0;
+ public void actionPerformed( ActionEvent evt )
+ {
+ EODisplayGroup displayGroup = (EODisplayGroup)
+ treePanel.tree.getSelectionPath().getLastPathComponent();
+// displayGroup.insertObjectAtIndex( new TestObject(), 0 );
+// displayGroup.deleteObjectAtIndex( 0 );
+ List sortOrderings = new LinkedList();
+ if ( count++ % 2 == 0 )
+ {
+ sortOrderings.add( new EOSortOrdering(
+ "lastName", EOSortOrdering.CompareAscending ) );
+ }
+ else
+ {
+ sortOrderings.add( new EOSortOrdering(
+ "lastName", EOSortOrdering.CompareDescending ) );
+ }
+ displayGroup.setSortOrderings( sortOrderings );
+ displayGroup.updateDisplayedObjects();
+ }
+ } );
+*/
+/*
+ ta = new DisplayGroupActionAssociation(
+ treePanel.editPanel.addPanel.getButton( "Remove" ) );
+ ta.bindAspect( EOAssociation.ActionAspect, detailGroup, "deleteSelection" );
+ ta.establishConnection();
+
+ ta = new DisplayGroupActionAssociation(
+ treePanel.editPanel.addPanel.getButton( "Refresh" ) );
+ ta.bindAspect( EOAssociation.ActionAspect, group, "updateDisplayedObjects" );
+ ta.establishConnection();
+*/
+
+ // add mouse listener for list
+
+ treePanel.editPanel.list.addMouseListener( new MouseAdapter()
+ {
+ public void mouseClicked(MouseEvent e)
+ {
+ if ( e.getClickCount() == 2 )
+ {
+ Object item = detailGroup.selectedObject();
+ if ( item != null )
+ {
+ new InspectorController( item );
+ }
+ }
+ }
+ });
+
+ // launch
+
+ JDialog d = new JDialog();
+ d.getContentPane().add( treePanel );
+ d.setTitle( "Tree Panel" );
+ d.pack();
+ WindowUtilities.cascade( d );
+ d.show();
+
+ // workaround for memory issues on jdk1.2.2
+ d.addWindowListener( new WindowAdapter()
+ {
+ // exit on close
+ public void windowClosing(WindowEvent e)
+ {
+ ((JDialog)e.getWindow()).getContentPane().removeAll();
+ }
+ });
+ }
+
+}