diff options
| author | Benjamin Culkin <scorpress@gmail.com> | 2024-05-19 17:56:33 -0400 |
|---|---|---|
| committer | Benjamin Culkin <scorpress@gmail.com> | 2024-05-19 17:56:33 -0400 |
| commit | aedc34d55462a75e329bbf342251ff6504cd117e (patch) | |
| tree | bcc8f1f2352582717b484df302aeea6696b8f000 /projects/net.wotonomy.test/src/main/java/net/wotonomy/test/EditController.java | |
Initial import from SVN
Diffstat (limited to 'projects/net.wotonomy.test/src/main/java/net/wotonomy/test/EditController.java')
| -rw-r--r-- | projects/net.wotonomy.test/src/main/java/net/wotonomy/test/EditController.java | 214 |
1 files changed, 214 insertions, 0 deletions
diff --git a/projects/net.wotonomy.test/src/main/java/net/wotonomy/test/EditController.java b/projects/net.wotonomy.test/src/main/java/net/wotonomy/test/EditController.java new file mode 100644 index 0000000..b304ade --- /dev/null +++ b/projects/net.wotonomy.test/src/main/java/net/wotonomy/test/EditController.java @@ -0,0 +1,214 @@ +package net.wotonomy.test; + +import java.awt.BorderLayout; +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.BorderFactory; +import javax.swing.JDialog; +import javax.swing.JFrame; + +import net.wotonomy.control.ChildDataSource; +import net.wotonomy.control.EODataSource; +import net.wotonomy.control.PropertyDataSource; +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.DisplayGroupActionAssociation; +import net.wotonomy.ui.swing.ListAssociation; +import net.wotonomy.ui.swing.RadioPanelAssociation; +import net.wotonomy.ui.swing.TextAssociation; +import net.wotonomy.ui.swing.components.ButtonPanel; +import net.wotonomy.ui.swing.util.WindowUtilities; + +/** +* A simple editor panel with a few textfields. +*/ +public class EditController +{ + EODisplayGroup group; + JDialog dialog; + + public EditController( EODataSource aDataSource ) + { + EditPanel editPanel = new EditPanel(); + editPanel.infoPanel.setBorder( + BorderFactory.createCompoundBorder( + BorderFactory.createRaisedBevelBorder(), + BorderFactory.createEmptyBorder( 10, 10, 10, 10 ) ) ); + editPanel.setBorder( + BorderFactory.createEmptyBorder( 0, 0, 0, 0 ) ); + ButtonPanel okPanel = new ButtonPanel( + new String[] { "Revert", "Refault", "Refresh", "Commit" } ); + editPanel.add( okPanel, BorderLayout.SOUTH ); + + group = new EODisplayGroup(); + group.setDataSource( aDataSource ); + group.fetch(); + group.selectNext(); + + // text associations + + EOAssociation ta; + + ta = new TextAssociation( editPanel.firstNameField ); + ta.bindAspect( EOAssociation.ValueAspect, group, "firstName" ); + ta.establishConnection(); + + ta = new TextAssociation( editPanel.middleNameField ); + ta.bindAspect( EOAssociation.ValueAspect, group, "middleName" ); + ta.establishConnection(); + + ta = new TextAssociation( editPanel.lastNameField ); + ta.bindAspect( EOAssociation.ValueAspect, group, "lastName" ); + ta.establishConnection(); + + // radio panels + + ta = new RadioPanelAssociation( 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(); + detailGroup.setDataSource( new PropertyDataSource( + aDataSource.editingContext(), TestObject.class ) ); + + ta = new MasterDetailAssociation( detailGroup ); + ta.bindAspect( EOAssociation.ParentAspect, group, "childList" ); + ta.establishConnection(); + + ta = new ListAssociation( editPanel.list ); + ta.bindAspect( EOAssociation.TitlesAspect, detailGroup, "fullName" ); + ta.establishConnection(); + + // display group action associations + + AbstractButton button = (AbstractButton) + editPanel.addPanel.getButton( "Add" ); + button.addActionListener( new ActionListener() + { + public void actionPerformed( ActionEvent evt ) + { + detailGroup.insertNewObjectAtIndex( 0 ); + } + } ); + + ta = new DisplayGroupActionAssociation( + editPanel.addPanel.getButton( "Remove" ) ); + ta.bindAspect( EOAssociation.ActionAspect, detailGroup, "deleteSelection" ); + ta.establishConnection(); + + // ok / cancel buttons + + button = (AbstractButton) + okPanel.getButton( "Commit" ); + button.addActionListener( new ActionListener() + { + public void actionPerformed( ActionEvent evt ) + { + group.dataSource().editingContext().saveChanges(); + } + } ); + + button = (AbstractButton) + okPanel.getButton( "Refresh" ); + button.addActionListener( new ActionListener() + { + public void actionPerformed( ActionEvent evt ) + { + group.dataSource().editingContext().invalidateAllObjects(); + } + } ); + + button = (AbstractButton) + okPanel.getButton( "Refault" ); + button.addActionListener( new ActionListener() + { + public void actionPerformed( ActionEvent evt ) + { +/* + Object o = group.displayedObjects().objectAtIndex( 0 ); + group.dataSource().editingContext().refaultObject( + o, + group.dataSource().editingContext().globalIDForObject( o ), + group.dataSource().editingContext() ); +*/ + group.dataSource().editingContext().revert(); + group.dataSource().editingContext().refaultObjects(); + } + } ); + + button = (AbstractButton) + okPanel.getButton( "Revert" ); + button.addActionListener( new ActionListener() + { + public void actionPerformed( ActionEvent evt ) + { + group.dataSource().editingContext().revert(); + } + } ); + + // add mouse listener for list + + editPanel.list.addMouseListener( new MouseAdapter() + { + public void mouseClicked(MouseEvent e) + { + if ( e.getClickCount() == 2 ) + { + Object item = detailGroup.selectedObject(); + if ( item != null ) + { +// new InspectorController( item ); + + new EditController( + new ChildDataSource( + group.dataSource(), item ) ); + } + } + } + }); + + // launch + + dialog = new JDialog(); + // add WindowListener for frame + dialog.setDefaultCloseOperation( JFrame.DISPOSE_ON_CLOSE ); + dialog.getContentPane().add( editPanel ); + dialog.setTitle( "Edit Panel" ); + dialog.pack(); +// dialog.setSize( 300, dialog.getSize().height ); + WindowUtilities.cascade( dialog ); + dialog.show(); + + // workaround for memory issues on jdk1.2.2 + dialog.addWindowListener( new WindowAdapter() + { + // exit on close + public void windowClosing(WindowEvent e) + { + ((JDialog)e.getWindow()).getContentPane().removeAll(); + } + }); + } + +} |
