summaryrefslogtreecommitdiff
path: root/projects/net.wotonomy.ui/src/main/java/net/wotonomy/ui/MirrorDetailAssociation.java
diff options
context:
space:
mode:
authorBenjamin Culkin <scorpress@gmail.com>2024-05-19 17:56:33 -0400
committerBenjamin Culkin <scorpress@gmail.com>2024-05-19 17:56:33 -0400
commitaedc34d55462a75e329bbf342251ff6504cd117e (patch)
treebcc8f1f2352582717b484df302aeea6696b8f000 /projects/net.wotonomy.ui/src/main/java/net/wotonomy/ui/MirrorDetailAssociation.java
Initial import from SVN
Diffstat (limited to 'projects/net.wotonomy.ui/src/main/java/net/wotonomy/ui/MirrorDetailAssociation.java')
-rw-r--r--projects/net.wotonomy.ui/src/main/java/net/wotonomy/ui/MirrorDetailAssociation.java106
1 files changed, 106 insertions, 0 deletions
diff --git a/projects/net.wotonomy.ui/src/main/java/net/wotonomy/ui/MirrorDetailAssociation.java b/projects/net.wotonomy.ui/src/main/java/net/wotonomy/ui/MirrorDetailAssociation.java
new file mode 100644
index 0000000..aeac376
--- /dev/null
+++ b/projects/net.wotonomy.ui/src/main/java/net/wotonomy/ui/MirrorDetailAssociation.java
@@ -0,0 +1,106 @@
+/*
+Wotonomy: OpenStep design patterns for pure Java applications.
+Copyright (C) 2001 Intersect Software Corporation
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, see http://www.gnu.org
+*/
+
+package net.wotonomy.ui;
+import net.wotonomy.foundation.NSArray;
+
+/**
+* This master detail association synchronizes the contents
+* and selection of the master group into the detail group.
+*/
+public class MirrorDetailAssociation extends MasterDetailAssociation{
+
+ /**
+ * Standard constructor specifying the detail display group.
+ * @param displayGroup the detail display group of this
+ * Master-Detail Association
+ */
+ public MirrorDetailAssociation(EODisplayGroup displayGroup){
+ super(displayGroup);
+ }
+
+ /**
+ * Called by subjectChanged() to requalify the controlled
+ * display group with the indexed object and the bound key.
+ * This implementation ignores both and sets the object array
+ * of the detail group to the displayed objects of the master
+ * and sets the selection to match.
+ */
+ protected void requalify()
+ {
+ EODisplayGroup detail = (EODisplayGroup) object();
+ EODisplayGroup master =
+ displayGroupForAspect( ParentAspect );
+
+ if ( master != null )
+ {
+ NSArray masterObjects = master.displayedObjects();
+ NSArray detailObjects = detail.displayedObjects();
+ int size = masterObjects.size();
+ boolean different = false;
+
+ // see if lists contain the same object instances
+ if ( size == detailObjects.size() )
+ {
+ for ( int i = 0; i < size; i++ )
+ {
+ if ( masterObjects.objectAtIndex(i)
+ != detailObjects.objectAtIndex(i) )
+ {
+ different = true;
+ break;
+ }
+ }
+ }
+ else // different sizes
+ {
+ different = true;
+ }
+
+ // if different, sync contents and selection with master
+ if ( different )
+ {
+ detail.setObjectArray( masterObjects );
+ detail.setSelectionIndexes( master.selectionIndexes() );
+ }
+ else // if selection changed, sync selection with master
+ if ( master.selectionChanged() )
+ {
+ detail.setSelectionIndexes( master.selectionIndexes() );
+ }
+ }
+ else // no bound display group, clear
+ {
+ detail.setObjectArray( null );
+ }
+ }
+}
+/*
+ * $Log$
+ * Revision 1.1 2006/02/16 13:22:22 cgruber
+ * Check in all sources in eclipse-friendly maven-enabled packages.
+ *
+ * Revision 1.2 2001/07/05 22:13:28 mpowers
+ * Now only updating if master has actually changed.
+ *
+ * Revision 1.1 2001/05/29 19:57:47 mpowers
+ * Added some neglected files.
+ *
+ *
+ */
+