[archstudio-commits] svn commit: r7095 - in /archstudio4/branches/enhancements/edu.uci.isr.archstudio4: ./ META-INF/ res/eclipse/ src/edu/uci/isr/archstudio4/comp/archipelago/ src/edu/uci/isr/archstudio4/comp/archipelago/activitydiagrams/ src/edu/uci/isr/archstudio4/comp/archipelago/generic/logics/hints/ src/edu/uci/isr/archstudio4/comp/archipelago/statecharts/ src/edu/uci/isr/archstudio4/comp/archipelago/types/ src/edu/uci/isr/archstudio4/comp/archipelago/util/ src/edu/uci/isr/archstudio4/comp/archipelago/variants/

archstudio-commits-owner at uci.edu archstudio-commits-owner at uci.edu
Wed May 7 10:50:07 PDT 2008


Author: ssubrama
Date: Wed May  7 10:50:06 2008
New Revision: 7095

Log:
Merged revisions 6965,7001,7015-7016,7032,7054,7061,7080,7085-7086 via svnm=
erge from =

http://tps.ics.uci.edu/svn/projects/archstudio4/trunk/edu.uci.isr.archstudi=
o4

........
  r6965 | shendric | 2008-04-18 08:53:57 -0700 (Fri, 18 Apr 2008) | 1 line
  =

  Fixed: brick color hints were not being stored
........
  r7001 | shendric | 2008-04-23 21:35:55 -0700 (Wed, 23 Apr 2008) | 4 lines
  =

  Fixed: color could be edited on a thing even if it did not have the IHasM=
utableColor.USER_MAY_EDIT_COLOR property
  =

  ASSIGNED - # 263: Color hints are not being stored for architecture struc=
tures =

  http://tps.ics.uci.edu/trac/projects/ticket/263
........
  r7015 | shendric | 2008-04-25 09:57:02 -0700 (Fri, 25 Apr 2008) | 4 lines
  =

  Fixed: the logics now properly support editing colors at appropriate times
  =

  ASSIGNED - # 263: Color hints are not being stored for architecture struc=
tures =

  http://tps.ics.uci.edu/trac/projects/ticket/263
........
  r7016 | shendric | 2008-04-25 12:59:56 -0700 (Fri, 25 Apr 2008) | 1 line
  =

  *** New Release
........
  r7032 | shendric | 2008-04-29 20:57:17 -0700 (Tue, 29 Apr 2008) | 4 lines
  =

  Changed: XAdlHintRepository no longer sends out change events resulting f=
rom its own updates
  =

  NEW - # 266: BNA Hints are not always stored =

  http://tps.ics.uci.edu/trac/projects/ticket/266
........
  r7054 | shendric | 2008-05-01 08:17:02 -0700 (Thu, 01 May 2008) | 1 line
  =

  Fixed: old hints were not being restored
........
  r7061 | shendric | 2008-05-01 19:43:56 -0700 (Thu, 01 May 2008) | 1 line
  =

  Fixed: Forgot to re-enable the new hints
........
  r7080 | shendric | 2008-05-04 05:52:01 -0700 (Sun, 04 May 2008) | 2 lines
  =

  Removed possible deadlock in RotatingOffsetLogic and LifeSapperLogic
  Removed need for multiple TypedThingTrackingLogic instances
........
  r7085 | shendric | 2008-05-05 08:36:52 -0700 (Mon, 05 May 2008) | 2 lines
  =

  Removed possible deadlock
  Modified ModelBoundsTrackingLogic so that it does not send out events
........
  r7086 | shendric | 2008-05-05 10:43:10 -0700 (Mon, 05 May 2008) | 1 line
  =

  Added target file (needed for Eclipse 3.4)
........

Added:
    archstudio4/branches/enhancements/edu.uci.isr.archstudio4/res/eclipse/g=
eneric.target
      - copied unchanged from r7086, archstudio4/trunk/edu.uci.isr.archstud=
io4/res/eclipse/generic.target
Removed:
    archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/util/AbstractEditColorLogic.java
Modified:
    archstudio4/branches/enhancements/edu.uci.isr.archstudio4/   (props cha=
nged)
    archstudio4/branches/enhancements/edu.uci.isr.archstudio4/META-INF/MANI=
FEST.MF
    archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/ArchipelagoUtils.java
    archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/activitydiagrams/ActivityDiagramsEditorSupp=
ort.java
    archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/generic/logics/hints/XAdlHintRepository.java
    archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/statecharts/StatechartsEditorSupport.java
    archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/types/StructureEditColorLogic.java
    archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/types/StructureEditorSupport.java
    archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/types/StructureFileManagerListener.java
    archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/types/StructureMapper.java
    archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/types/StructureXArchEventHandlerLogic.java
    archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/types/TypesEditColorLogic.java
    archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/types/TypesEditorSupport.java
    archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/types/TypesMapper.java
    archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/types/TypesXArchEventHandlerLogic.java
    archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/util/ArrayPropertyCoder.java
    archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/util/BasicPropertyCoder.java
    archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/util/BasicSWTPropertyCoder.java
    archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/util/EnumPropertyCoder.java
    archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/util/HintSupport.java
    archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/util/IPropertyCoder.java
    archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/util/PropertyDecodeException.java
    archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/variants/VariantsEventListener.java

Propchange: archstudio4/branches/enhancements/edu.uci.isr.archstudio4/
---------------------------------------------------------------------------=
---
Binary property 'svnmerge-integrated' - no diff available.

Modified: archstudio4/branches/enhancements/edu.uci.isr.archstudio4/META-IN=
F/MANIFEST.MF
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- archstudio4/branches/enhancements/edu.uci.isr.archstudio4/META-INF/MANI=
FEST.MF (original)
+++ archstudio4/branches/enhancements/edu.uci.isr.archstudio4/META-INF/MANI=
FEST.MF Wed May  7 10:50:06 2008
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: ArchStudio 4 Plug-in
 Bundle-SymbolicName: edu.uci.isr.archstudio4;singleton:=3Dtrue
-Bundle-Version: 4.1.22.a
+Bundle-Version: 4.1.22.b
 Bundle-Activator: edu.uci.isr.archstudio4.Archstudio4Activator
 Bundle-Localization: plugin
 Require-Bundle: org.eclipse.core.runtime,

Modified: archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu=
/uci/isr/archstudio4/comp/archipelago/ArchipelagoUtils.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/ArchipelagoUtils.java (original)
+++ archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/ArchipelagoUtils.java Wed May  7 10:50:06 2=
008
@@ -38,7 +38,7 @@
 import edu.uci.isr.bna4.facets.IHasAssemblyData;
 import edu.uci.isr.bna4.facets.IHasBoundingBox;
 import edu.uci.isr.bna4.facets.IHasWorld;
-import edu.uci.isr.bna4.logics.tracking.TypedThingSetTrackingLogic;
+import edu.uci.isr.bna4.logics.tracking.TypedThingTrackingLogic;
 import edu.uci.isr.bna4.things.borders.PulsingBorderThing;
 import edu.uci.isr.bna4.things.labels.UserNotificationThing;
 import edu.uci.isr.bna4.things.utility.EnvironmentPropertiesThing;
@@ -160,9 +160,9 @@
 		return (BNAComposite)editorPane.getProperty(EDITOR_PANE_PROPERTY_BNA_COM=
POSITE);
 	}
 =

-	public static void sendEventToInnerViews(XArchFlatEvent evt, IBNAWorld wo=
rld, TypedThingSetTrackingLogic<IHasWorld> ttstlView){
+	public static void sendEventToInnerViews(XArchFlatEvent evt, IBNAWorld wo=
rld, TypedThingTrackingLogic tttl){
 		//Ship the event to subviews
-		IHasWorld[] worldThings =3D ttstlView.getThings();
+		IHasWorld[] worldThings =3D tttl.getThings(IHasWorld.class);
 		if(worldThings !=3D null){
 			for(IHasWorld vt: worldThings){
 				IBNAWorld innerWorld =3D vt.getWorld();

Modified: archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu=
/uci/isr/archstudio4/comp/archipelago/activitydiagrams/ActivityDiagramsEdit=
orSupport.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/activitydiagrams/ActivityDiagramsEditorSupp=
ort.java (original)
+++ archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/activitydiagrams/ActivityDiagramsEditorSupp=
ort.java Wed May  7 10:50:06 2008
@@ -18,6 +18,7 @@
 import edu.uci.isr.archstudio4.comp.archipelago.ArchipelagoMyxComponent;
 import edu.uci.isr.archstudio4.comp.archipelago.ArchipelagoServices;
 import edu.uci.isr.archstudio4.comp.archipelago.ArchipelagoUtils;
+import edu.uci.isr.archstudio4.comp.archipelago.activitydiagrams.logic.uti=
l.ExportPPTLogic2;
 import edu.uci.isr.archstudio4.comp.archipelago.activitydiagrams.logics.ed=
iting.ActivityDiagramNewElementLogic;
 import edu.uci.isr.archstudio4.comp.archipelago.activitydiagrams.logics.ed=
iting.ActivityDiagramsEditorContextMenuAddDiagramLogic;
 import edu.uci.isr.archstudio4.comp.archipelago.activitydiagrams.logics.ma=
pping.MapXadlActionLogic;
@@ -55,10 +56,6 @@
 import edu.uci.isr.bna4.assemblies.AssemblyUtils;
 import edu.uci.isr.bna4.assemblies.IAssembly;
 import edu.uci.isr.bna4.assemblies.TableAssembly;
-import edu.uci.isr.bna4.facets.IHasMutableLife;
-import edu.uci.isr.bna4.facets.IHasMutableRotatingOffset;
-import edu.uci.isr.bna4.facets.IHasMutableSelected;
-import edu.uci.isr.bna4.facets.IHasWorld;
 import edu.uci.isr.bna4.logics.background.LifeSapperLogic;
 import edu.uci.isr.bna4.logics.background.RotatingOffsetLogic;
 import edu.uci.isr.bna4.logics.coordinating.MaintainAnchoredAssemblyOrient=
ationLogic;
@@ -95,7 +92,7 @@
 import edu.uci.isr.bna4.logics.tracking.SelectionTrackingLogic;
 import edu.uci.isr.bna4.logics.tracking.ThingPropertyPrefixTrackingLogic;
 import edu.uci.isr.bna4.logics.tracking.ThingPropertyTrackingLogic;
-import edu.uci.isr.bna4.logics.tracking.TypedThingSetTrackingLogic;
+import edu.uci.isr.bna4.logics.tracking.TypedThingTrackingLogic;
 import edu.uci.isr.bna4.logics.util.ExportBitmapLogic;
 import edu.uci.isr.bna4.things.labels.BoxedLabelThing;
 import edu.uci.isr.bna4.things.utility.EnvironmentPropertiesThing;
@@ -109,9 +106,6 @@
 import edu.uci.isr.xarchflat.XArchFlatInterface;
 import edu.uci.isr.xarchflat.XArchPath;
 =

-import edu.uci.isr.archstudio4.comp.archipelago.activitydiagrams.logic.uti=
l.ExportPPTLogic2;
-
-
 public class ActivityDiagramsEditorSupport{
 =

 	// For tree node cache
@@ -196,6 +190,8 @@
 		IThingLogicManager logicManager =3D bnaWorld.getThingLogicManager();
 =

 		// tracking logics
+		TypedThingTrackingLogic tttl =3D new TypedThingTrackingLogic();
+		logicManager.addThingLogic(tttl);
 		ThingPropertyTrackingLogic tptl =3D new ThingPropertyTrackingLogic();
 		logicManager.addThingLogic(tptl);
 		ThingPropertyPrefixTrackingLogic tpptl =3D new ThingPropertyPrefixTracki=
ngLogic(tptl);
@@ -204,26 +200,17 @@
 		logicManager.addThingLogic(rtl);
 		SelectionTrackingLogic stl =3D new SelectionTrackingLogic();
 		logicManager.addThingLogic(stl);
-		ModelBoundsTrackingLogic mbtl =3D new ModelBoundsTrackingLogic();
+		ModelBoundsTrackingLogic mbtl =3D new ModelBoundsTrackingLogic(tttl);
 		logicManager.addThingLogic(mbtl);
 =

-		TypedThingSetTrackingLogic<IHasMutableRotatingOffset> ttstlOffset =3D ne=
w TypedThingSetTrackingLogic<IHasMutableRotatingOffset>(IHasMutableRotating=
Offset.class);
-		logicManager.addThingLogic(ttstlOffset);
-		TypedThingSetTrackingLogic<IHasMutableLife> ttstlLife =3D new TypedThing=
SetTrackingLogic<IHasMutableLife>(IHasMutableLife.class);
-		logicManager.addThingLogic(ttstlLife);
-		TypedThingSetTrackingLogic<IHasMutableSelected> ttstlSelected =3D new Ty=
pedThingSetTrackingLogic<IHasMutableSelected>(IHasMutableSelected.class);
-		logicManager.addThingLogic(ttstlSelected);
-		TypedThingSetTrackingLogic<IHasWorld> ttstlView =3D new TypedThingSetTra=
ckingLogic<IHasWorld>(IHasWorld.class);
-		logicManager.addThingLogic(ttstlView);
-
 		// event logics
 		DragMoveEventsLogic dml =3D new DragMoveEventsLogic();
 		logicManager.addThingLogic(dml);
-		logicManager.addThingLogic(new WorldThingExternalEventsLogic(ttstlView));
+		logicManager.addThingLogic(new WorldThingExternalEventsLogic(tttl));
 =

 		// background logics
-		logicManager.addThingLogic(new LifeSapperLogic(ttstlLife));
-		logicManager.addThingLogic(new RotatingOffsetLogic(ttstlOffset));
+		logicManager.addThingLogic(new LifeSapperLogic(tttl));
+		logicManager.addThingLogic(new RotatingOffsetLogic(tttl));
 		logicManager.addThingLogic(new ToolTipLogic());
 		// FIXME: this needs to be handled better (does not work with hierarchie=
s or multiple instances)
 		XadlSelectionProviderLogic xspl =3D new XadlSelectionProviderLogic(stl, =
AS.xarch);
@@ -242,12 +229,12 @@
 		logicManager.addThingLogic(new MoveWithLogic(rtl));
 =

 		// general editor logics
-		logicManager.addThingLogic(new ClickSelectionLogic(ttstlSelected));
+		logicManager.addThingLogic(new ClickSelectionLogic(tttl));
 		logicManager.addThingLogic(new MouseWheelZoomingLogic());
 		logicManager.addThingLogic(new MousePanningLogic());
 		logicManager.addThingLogic(new SnapToGridLogic(dml));
 		logicManager.addThingLogic(new KeyNudgerLogic());
-		logicManager.addThingLogic(new MarqueeSelectionLogic(ttstlSelected));
+		logicManager.addThingLogic(new MarqueeSelectionLogic(tttl));
 		logicManager.addThingLogic(new DragMovableLogic(dml, stl));
 		logicManager.addThingLogic(new BoxReshapeHandleLogic(stl, dml));
 		logicManager.addThingLogic(new SplineReshapeHandleLogic(stl, dml));

Modified: archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu=
/uci/isr/archstudio4/comp/archipelago/generic/logics/hints/XAdlHintReposito=
ry.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/generic/logics/hints/XAdlHintRepository.jav=
a (original)
+++ archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/generic/logics/hints/XAdlHintRepository.jav=
a Wed May  7 10:50:06 2008
@@ -3,8 +3,6 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
 =

 import edu.uci.isr.archstudio4.comp.archipelago.ArchipelagoUtils;
 import edu.uci.isr.bna4.IBNAWorld;
@@ -21,7 +19,7 @@
 import edu.uci.isr.bna4.logics.tracking.ThingPropertyTrackingLogic;
 import edu.uci.isr.sysutils.BidirectionalHashMap;
 import edu.uci.isr.sysutils.BidirectionalMap;
-import edu.uci.isr.sysutils.DelayedExecuteOnceThread;
+import edu.uci.isr.sysutils.HashBag;
 import edu.uci.isr.sysutils.ListenerList;
 import edu.uci.isr.sysutils.Tuple;
 import edu.uci.isr.xadlutils.XadlUtils;
@@ -34,7 +32,7 @@
 import edu.uci.isr.xarchflat.utils.XArchRelativePathTracker;
 =

 public class XAdlHintRepository
-	implements IHintRepository, XArchFlatListener{
+    implements IHintRepository, XArchFlatListener{
 =

 	private static final boolean DEBUG =3D false;
 =

@@ -51,6 +49,7 @@
 	protected final String maintainer;
 	protected final String version;
 	protected final ThingPropertyTrackingLogic tptl;
+	protected final Collection<ObjRef> ignoreObjRefUpdates =3D Collections.sy=
nchronizedCollection(new HashBag<ObjRef>());
 =

 	protected final XArchRelativePathTracker hintedElementRefTracker;
 	protected final BidirectionalMap<String, ObjRef> idToHintedElementRefs =
=3D new BidirectionalHashMap<String, ObjRef>();
@@ -118,7 +117,9 @@
 			public void processAdd(ObjRef objRef, ObjRef[] relativeAncestorRefs){
 				ObjRef hintedElementRef =3D relativeAncestorRefs[1];
 				update(objRef, hintedElementRef);
-				fireHintRepositoryChangeEvent(hintedElementRef, objRef);
+				if(!ignoreObjRefUpdates.remove(objRef)){
+					fireHintRepositoryChangeEvent(hintedElementRef, objRef);
+				}
 			}
 =

 			public void processUpdate(ObjRef objRef, ObjRef[] relativeAncestorRefs,=
 XArchFlatEvent evt, XArchPath relativeSourceTargetPath){
@@ -126,7 +127,9 @@
 				if(relativeSourceTargetPath.toTagsOnlyString().startsWith("name")){
 					update(objRef, hintedElementRef);
 				}
-				fireHintRepositoryChangeEvent(hintedElementRef, objRef);
+				if(!ignoreObjRefUpdates.remove(objRef)){
+					fireHintRepositoryChangeEvent(hintedElementRef, objRef);
+				}
 			}
 =

 			public void processRemove(ObjRef objRef, ObjRef[] relativeAncestorRefs){
@@ -135,8 +138,10 @@
 				synchronized(hintedElementRefNameToPropertyRefs){
 					fireUpdate =3D hintedElementRefNameToPropertyRefs.values().remove(obj=
Ref);
 				}
-				if(fireUpdate){
-					fireHintRepositoryChangeEvent(hintedElementRef, objRef);
+				if(!ignoreObjRefUpdates.remove(objRef)){
+					if(fireUpdate){
+						fireHintRepositoryChangeEvent(hintedElementRef, objRef);
+					}
 				}
 			}
 =

@@ -325,11 +330,11 @@
 			IEncodedValue ev =3D new BasicEncodedValue();
 			if(propertyCoder.encode(null, ev, value)){
 				if(!xarch.has(valueRef, "type", ev.getType())){
-					// ignoreKey(new Tuple(valueRef, "Type"));
+					ignoreObjRefUpdates.add(propertyRef);
 					xarch.set(valueRef, "type", ev.getType());
 				}
 				if(!xarch.has(valueRef, "data", ev.getData())){
-					// ignoreKey(new Tuple(valueRef, "Data"));
+					ignoreObjRefUpdates.add(propertyRef);
 					xarch.set(valueRef, "data", ev.getData());
 				}
 				return true;
@@ -384,26 +389,6 @@
 	}
 =

 	ListenerList<IHintRepositoryChangeListener> changeListeners =3D new Liste=
nerList<IHintRepositoryChangeListener>(IHintRepositoryChangeListener.class);
-	Set<Tuple> pendingHintRepositoryChangeEvents =3D Collections.synchronized=
Set(new HashSet<Tuple>());
-	DelayedExecuteOnceThread fireEventsThread =3D new DelayedExecuteOnceThrea=
d(250, new Runnable(){
-
-		public void run(){
-			Tuple[] hintEventTuples =3D null;
-			synchronized(pendingHintRepositoryChangeEvents){
-				if(!pendingHintRepositoryChangeEvents.isEmpty()){
-					hintEventTuples =3D pendingHintRepositoryChangeEvents.toArray(new Tup=
le[pendingHintRepositoryChangeEvents.size()]);
-					pendingHintRepositoryChangeEvents.clear();
-				}
-			}
-			if(hintEventTuples !=3D null){
-				for(Tuple t: hintEventTuples){
-					for(IHintRepositoryChangeListener changeListener: changeListeners.get=
Listeners()){
-						changeListener.hintRepositoryChanged(XAdlHintRepository.this, t.getE=
lement(0), (String)t.getElement(1));
-					}
-				}
-			}
-		}
-	}, true, true);
 =

 	public void addHintRepositoryChangeListener(IHintRepositoryChangeListener=
 l){
 		changeListeners.add(l);
@@ -414,8 +399,8 @@
 	}
 =

 	protected void fireHintRepositoryChangeEvent(Object context, String hintN=
ame){
-		if(pendingHintRepositoryChangeEvents.add(new Tuple(context, hintName))){
-			fireEventsThread.execute();
+		for(IHintRepositoryChangeListener changeListener: changeListeners.getLis=
teners()){
+			changeListener.hintRepositoryChanged(this, context, hintName);
 		}
 	}
 =


Modified: archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu=
/uci/isr/archstudio4/comp/archipelago/statecharts/StatechartsEditorSupport.=
java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/statecharts/StatechartsEditorSupport.java (=
original)
+++ archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/statecharts/StatechartsEditorSupport.java W=
ed May  7 10:50:06 2008
@@ -39,10 +39,6 @@
 import edu.uci.isr.bna4.IMutableCoordinateMapper;
 import edu.uci.isr.bna4.IThing;
 import edu.uci.isr.bna4.IThingLogicManager;
-import edu.uci.isr.bna4.facets.IHasMutableLife;
-import edu.uci.isr.bna4.facets.IHasMutableRotatingOffset;
-import edu.uci.isr.bna4.facets.IHasMutableSelected;
-import edu.uci.isr.bna4.facets.IHasWorld;
 import edu.uci.isr.bna4.logics.background.LifeSapperLogic;
 import edu.uci.isr.bna4.logics.background.RotatingOffsetLogic;
 import edu.uci.isr.bna4.logics.coordinating.MaintainAnchoredAssemblyOrient=
ationLogic;
@@ -78,7 +74,7 @@
 import edu.uci.isr.bna4.logics.tracking.SelectionTrackingLogic;
 import edu.uci.isr.bna4.logics.tracking.ThingPropertyPrefixTrackingLogic;
 import edu.uci.isr.bna4.logics.tracking.ThingPropertyTrackingLogic;
-import edu.uci.isr.bna4.logics.tracking.TypedThingSetTrackingLogic;
+import edu.uci.isr.bna4.logics.tracking.TypedThingTrackingLogic;
 import edu.uci.isr.bna4.logics.util.ExportBitmapLogic;
 import edu.uci.isr.bna4.things.utility.EnvironmentPropertiesThing;
 import edu.uci.isr.bna4.things.utility.NoThing;
@@ -174,6 +170,8 @@
 		IThingLogicManager logicManager =3D bnaWorld.getThingLogicManager();
 =

 		// tracking logics
+		TypedThingTrackingLogic tttl =3D new TypedThingTrackingLogic();
+		logicManager.addThingLogic(tttl);
 		ThingPropertyTrackingLogic tptl =3D new ThingPropertyTrackingLogic();
 		logicManager.addThingLogic(tptl);
 		ThingPropertyPrefixTrackingLogic tpptl =3D new ThingPropertyPrefixTracki=
ngLogic(tptl);
@@ -182,26 +180,17 @@
 		logicManager.addThingLogic(rtl);
 		SelectionTrackingLogic stl =3D new SelectionTrackingLogic();
 		logicManager.addThingLogic(stl);
-		ModelBoundsTrackingLogic mbtl =3D new ModelBoundsTrackingLogic();
+		ModelBoundsTrackingLogic mbtl =3D new ModelBoundsTrackingLogic(tttl);
 		logicManager.addThingLogic(mbtl);
 =

-		TypedThingSetTrackingLogic<IHasMutableRotatingOffset> ttstlOffset =3D ne=
w TypedThingSetTrackingLogic<IHasMutableRotatingOffset>(IHasMutableRotating=
Offset.class);
-		logicManager.addThingLogic(ttstlOffset);
-		TypedThingSetTrackingLogic<IHasMutableLife> ttstlLife =3D new TypedThing=
SetTrackingLogic<IHasMutableLife>(IHasMutableLife.class);
-		logicManager.addThingLogic(ttstlLife);
-		TypedThingSetTrackingLogic<IHasMutableSelected> ttstlSelected =3D new Ty=
pedThingSetTrackingLogic<IHasMutableSelected>(IHasMutableSelected.class);
-		logicManager.addThingLogic(ttstlSelected);
-		TypedThingSetTrackingLogic<IHasWorld> ttstlView =3D new TypedThingSetTra=
ckingLogic<IHasWorld>(IHasWorld.class);
-		logicManager.addThingLogic(ttstlView);
-
 		// event logics
 		DragMoveEventsLogic dml =3D new DragMoveEventsLogic();
 		logicManager.addThingLogic(dml);
-		logicManager.addThingLogic(new WorldThingExternalEventsLogic(ttstlView));
+		logicManager.addThingLogic(new WorldThingExternalEventsLogic(tttl));
 =

 		// background logics
-		logicManager.addThingLogic(new LifeSapperLogic(ttstlLife));
-		logicManager.addThingLogic(new RotatingOffsetLogic(ttstlOffset));
+		logicManager.addThingLogic(new LifeSapperLogic(tttl));
+		logicManager.addThingLogic(new RotatingOffsetLogic(tttl));
 		logicManager.addThingLogic(new ToolTipLogic());
 		// FIXME: this needs to be handled better (does not work with hierarchie=
s or multiple instances)
 		XadlSelectionProviderLogic xspl =3D new XadlSelectionProviderLogic(stl, =
AS.xarch);
@@ -220,12 +209,12 @@
 		logicManager.addThingLogic(new MoveWithLogic(rtl));
 =

 		// general editor logics
-		logicManager.addThingLogic(new ClickSelectionLogic(ttstlSelected));
+		logicManager.addThingLogic(new ClickSelectionLogic(tttl));
 		logicManager.addThingLogic(new MouseWheelZoomingLogic());
 		logicManager.addThingLogic(new MousePanningLogic());
 		logicManager.addThingLogic(new SnapToGridLogic(dml));
 		logicManager.addThingLogic(new KeyNudgerLogic());
-		logicManager.addThingLogic(new MarqueeSelectionLogic(ttstlSelected));
+		logicManager.addThingLogic(new MarqueeSelectionLogic(tttl));
 		logicManager.addThingLogic(new DragMovableLogic(dml, stl));
 		logicManager.addThingLogic(new BoxReshapeHandleLogic(stl, dml));
 		logicManager.addThingLogic(new SplineReshapeHandleLogic(stl, dml));

Modified: archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu=
/uci/isr/archstudio4/comp/archipelago/types/StructureEditColorLogic.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/types/StructureEditColorLogic.java (origina=
l)
+++ archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/types/StructureEditColorLogic.java Wed May =
 7 10:50:06 2008
@@ -1,50 +1,32 @@
 package edu.uci.isr.archstudio4.comp.archipelago.types;
 =

+import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.swt.graphics.RGB;
 =

-import edu.uci.isr.archstudio4.comp.archipelago.ArchipelagoServices;
-import edu.uci.isr.archstudio4.comp.archipelago.util.AbstractEditColorLogi=
c;
 import edu.uci.isr.bna4.BNAUtils;
 import edu.uci.isr.bna4.IBNAView;
 import edu.uci.isr.bna4.IThing;
-import edu.uci.isr.bna4.assemblies.BoxAssembly;
-import edu.uci.isr.bna4.assemblies.IAssembly;
-import edu.uci.isr.bna4.assemblies.SplineAssembly;
-import edu.uci.isr.bna4.assemblies.StickySplineAssembly;
-import edu.uci.isr.bna4.facets.IHasAssemblyData;
-import edu.uci.isr.bna4.facets.IHasMutableColor;
-import edu.uci.isr.bna4.things.glass.BoxGlassThing;
-
-public class StructureEditColorLogic extends AbstractEditColorLogic{
-	protected ArchipelagoServices AS =3D null;
-	=

-	public StructureEditColorLogic(ArchipelagoServices services){
-		super();
-		this.AS =3D services;
-	}
-	=

-	protected boolean matches(IBNAView view, IThing t){
-		IThing pt =3D view.getWorld().getBNAModel().getParentThing(t);
-		if(pt !=3D null){
-			if((t instanceof BoxGlassThing) && StructureMapper.isBrickAssemblyRootT=
hing(pt)){
-				return true;
-			}
-			else if(StructureMapper.isLinkAssemblyRootThing(pt)){
-				return true;
-			}
-		}
-		return false;
+import edu.uci.isr.bna4.logics.editing.EditColorLogic;
+
+public class StructureEditColorLogic
+	extends EditColorLogic{
+
+	final protected IPreferenceStore prefs;
+
+	public StructureEditColorLogic(IPreferenceStore prefs){
+		this.prefs =3D prefs;
 	}
-	=

+
+	@Override
 	protected RGB getDefaultRGB(IBNAView view, IThing[] thingsToEdit){
 		RGB defaultRGB =3D null;
-		RGB defaultComponentRGB =3D StructureMapper.getDefaultComponentColor(AS);
-		RGB defaultConnectorRGB =3D StructureMapper.getDefaultConnectorColor(AS);
-		for(int i =3D 0; i < thingsToEdit.length; i++){
-			IThing pt =3D view.getWorld().getBNAModel().getParentThing(thingsToEdit=
[i]);
+		RGB defaultComponentRGB =3D StructureMapper.getDefaultComponentColor(pre=
fs);
+		RGB defaultConnectorRGB =3D StructureMapper.getDefaultConnectorColor(pre=
fs);
+		for(IThing element: thingsToEdit){
+			IThing pt =3D view.getWorld().getBNAModel().getParentThing(element);
 			if(pt !=3D null){
 				if(StructureMapper.isComponentAssemblyRootThing(pt)){
-					if((defaultRGB =3D=3D null) || (BNAUtils.nulleq(defaultRGB, defaultCo=
mponentRGB))){
+					if(defaultRGB =3D=3D null || BNAUtils.nulleq(defaultRGB, defaultCompo=
nentRGB)){
 						defaultRGB =3D defaultComponentRGB;
 					}
 					else{
@@ -52,7 +34,7 @@
 					}
 				}
 				else if(StructureMapper.isConnectorAssemblyRootThing(pt)){
-					if((defaultRGB =3D=3D null) || (BNAUtils.nulleq(defaultRGB, defaultCo=
nnectorRGB))){
+					if(defaultRGB =3D=3D null || BNAUtils.nulleq(defaultRGB, defaultConne=
ctorRGB)){
 						defaultRGB =3D defaultConnectorRGB;
 					}
 					else{
@@ -63,38 +45,4 @@
 		}
 		return defaultRGB;
 	}
-	=

-	protected IHasMutableColor getColoredThing(IBNAView view, IThing t){
-		IThing pt =3D view.getWorld().getBNAModel().getParentThing(t);
-		if(pt !=3D null && pt instanceof IHasAssemblyData){
-			if(StructureMapper.isBrickAssemblyRootThing(pt)){
-				IAssembly a =3D ((IHasAssemblyData)pt).getAssembly();
-				if(a instanceof BoxAssembly)
-					return ((BoxAssembly)a).getBoxThing();
-			}
-			else if(StructureMapper.isLinkAssemblyRootThing(pt)){
-				IAssembly a =3D ((IHasAssemblyData)pt).getAssembly();
-				if(a instanceof SplineAssembly)
-					return ((SplineAssembly)a).getSplineThing();
-				if(a instanceof StickySplineAssembly)
-					return ((StickySplineAssembly)a).getSplineThing();
-			}
-		}
-		return null;
-	}
-	=

-	protected RGB getRGB(IBNAView view, IThing t){
-		IHasMutableColor ct =3D getColoredThing(view, t);
-		if(ct !=3D null){
-			return ct.getColor();
-		}
-		return null;
-	}
-	=

-	protected void setRGB(IBNAView view, IThing t, RGB newRGB){
-		IHasMutableColor ct =3D getColoredThing(view, t);
-		if(ct !=3D null){
-			ct.setColor(newRGB);
-		}
-	}
 }

Modified: archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu=
/uci/isr/archstudio4/comp/archipelago/types/StructureEditorSupport.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/types/StructureEditorSupport.java (original)
+++ archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/types/StructureEditorSupport.java Wed May  =
7 10:50:06 2008
@@ -4,7 +4,6 @@
 import java.util.Arrays;
 import java.util.List;
 =

-import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.DisposeEvent;
 import org.eclipse.swt.events.DisposeListener;
@@ -42,10 +41,6 @@
 import edu.uci.isr.bna4.IThingLogicManager;
 import edu.uci.isr.bna4.assemblies.AssemblyUtils;
 import edu.uci.isr.bna4.assemblies.IAssembly;
-import edu.uci.isr.bna4.facets.IHasMutableLife;
-import edu.uci.isr.bna4.facets.IHasMutableRotatingOffset;
-import edu.uci.isr.bna4.facets.IHasMutableSelected;
-import edu.uci.isr.bna4.facets.IHasWorld;
 import edu.uci.isr.bna4.logics.background.DirtyWorldThingsLogic;
 import edu.uci.isr.bna4.logics.background.LifeSapperLogic;
 import edu.uci.isr.bna4.logics.background.RotatingOffsetLogic;
@@ -88,9 +83,8 @@
 import edu.uci.isr.bna4.logics.tracking.SelectionTrackingLogic;
 import edu.uci.isr.bna4.logics.tracking.ThingPropertyPrefixTrackingLogic;
 import edu.uci.isr.bna4.logics.tracking.ThingPropertyTrackingLogic;
-import edu.uci.isr.bna4.logics.tracking.TypedThingSetTrackingLogic;
+import edu.uci.isr.bna4.logics.tracking.TypedThingTrackingLogic;
 import edu.uci.isr.bna4.logics.util.ExportBitmapLogic;
-import edu.uci.isr.bna4.things.glass.MappingGlassThing;
 import edu.uci.isr.bna4.things.utility.EnvironmentPropertiesThing;
 import edu.uci.isr.bna4.things.utility.NoThing;
 import edu.uci.isr.myx.fw.IMyxBrick;
@@ -183,7 +177,7 @@
 		return bnaWorld;
 	}
 =

-	static void setupWorld(ArchipelagoServices AS, final ObjRef xArchRef, fin=
al IBNAWorld bnaWorld, ObjRef diagramInputRef){
+	static void setupWorld(final ArchipelagoServices AS, final ObjRef xArchRe=
f, final IBNAWorld bnaWorld, final ObjRef diagramInputRef){
 		IThingLogicManager logicManager =3D bnaWorld.getThingLogicManager();
 =

 		String format;
@@ -195,14 +189,14 @@
 		}
 =

 		// tracking logics
+		TypedThingTrackingLogic tttl =3D new TypedThingTrackingLogic();
+		logicManager.addThingLogic(tttl);
 		ThingPropertyTrackingLogic tptl =3D new ThingPropertyTrackingLogic();
 		logicManager.addThingLogic(tptl);
 		ThingPropertyPrefixTrackingLogic tpptl =3D new ThingPropertyPrefixTracki=
ngLogic(tptl);
 		logicManager.addThingLogic(tpptl);
 		ReferenceTrackingLogic rtl =3D new ReferenceTrackingLogic();
 		logicManager.addThingLogic(rtl);
-		TypedThingSetTrackingLogic<IHasWorld> ttstlView =3D new TypedThingSetTra=
ckingLogic<IHasWorld>(IHasWorld.class);
-		logicManager.addThingLogic(ttstlView);
 =

 		// XArchEvent logics
 		IThing splineThingsParent =3D new NoThing();
@@ -220,13 +214,21 @@
 			System.err.printf(format, "Update structure", lTime);
 		}
 		logicManager.addThingLogic(new MapXadlLinkLogic(AS.xarchcs, diagramInput=
Ref, "link", tptl, splineThingsParent, "link"));
-		logicManager.addThingLogic(new StructureXArchEventHandlerLogic(AS, ttstl=
View));
+		logicManager.addThingLogic(new StructureXArchEventHandlerLogic(AS, tttl)=
);
 		logicManager.addThingLogic(new FileDirtyLogic(AS, xArchRef));
 		logicManager.addThingLogic(new MaintainXadlLinksLogic(tptl, tpptl));
 =

 		if(DEBUG){
 			lTime =3D System.nanoTime();
 		}
+		readHints(AS, xArchRef, bnaWorld.getBNAModel(), diagramInputRef);
+		if(DEBUG){
+			lTime =3D System.nanoTime() - lTime;
+			System.err.printf(format, "Old hints", lTime);
+		}
+		if(DEBUG){
+			lTime =3D System.nanoTime();
+		}
 		XAdlHintRepository hr =3D new XAdlHintRepository(AS.xarch, diagramInputR=
ef, "edu.uci.isr.archstudio4.comp.archipelago", "4.1.0", tptl);
 		if(DEBUG){
 			lTime =3D System.nanoTime() - lTime;
@@ -250,41 +252,32 @@
 =

 		SelectionTrackingLogic stl =3D new SelectionTrackingLogic();
 		logicManager.addThingLogic(stl);
-		ModelBoundsTrackingLogic mbtl =3D new ModelBoundsTrackingLogic();
+		ModelBoundsTrackingLogic mbtl =3D new ModelBoundsTrackingLogic(tttl);
 		logicManager.addThingLogic(mbtl);
 =

-		TypedThingSetTrackingLogic<IHasMutableRotatingOffset> ttstlOffset =3D ne=
w TypedThingSetTrackingLogic<IHasMutableRotatingOffset>(IHasMutableRotating=
Offset.class);
-		logicManager.addThingLogic(ttstlOffset);
-		TypedThingSetTrackingLogic<IHasMutableLife> ttstlLife =3D new TypedThing=
SetTrackingLogic<IHasMutableLife>(IHasMutableLife.class);
-		logicManager.addThingLogic(ttstlLife);
-		TypedThingSetTrackingLogic<IHasMutableSelected> ttstlSelected =3D new Ty=
pedThingSetTrackingLogic<IHasMutableSelected>(IHasMutableSelected.class);
-		logicManager.addThingLogic(ttstlSelected);
-		TypedThingSetTrackingLogic<MappingGlassThing> ttstlMapping =3D new Typed=
ThingSetTrackingLogic<MappingGlassThing>(MappingGlassThing.class);
-		logicManager.addThingLogic(ttstlMapping);
-
 		// event logics
 		DragMoveEventsLogic dml =3D new DragMoveEventsLogic();
 		logicManager.addThingLogic(dml);
 		logicManager.addThingLogic(iwel);
-		logicManager.addThingLogic(new WorldThingExternalEventsLogic(ttstlView));
+		logicManager.addThingLogic(new WorldThingExternalEventsLogic(tttl));
 		// FIXME: this needs to be handled better (does not work with hierarchie=
s or multiple instances)
 		XadlSelectionProviderLogic xspl =3D new XadlSelectionProviderLogic(stl, =
AS.xarch);
 		logicManager.addThingLogic(xspl);
 		AS.workbenchSite.setSelectionProvider(xspl);
 =

 		// background logics
-		logicManager.addThingLogic(new LifeSapperLogic(ttstlLife));
-		logicManager.addThingLogic(new RotatingOffsetLogic(ttstlOffset));
+		logicManager.addThingLogic(new LifeSapperLogic(tttl));
+		logicManager.addThingLogic(new RotatingOffsetLogic(tttl));
 		logicManager.addThingLogic(new ToolTipLogic());
 		logicManager.addThingLogic(new DirtyWorldThingsLogic(iwel));
 =

 		// general editor logics
-		logicManager.addThingLogic(new ClickSelectionLogic(ttstlSelected));
+		logicManager.addThingLogic(new ClickSelectionLogic(tttl));
 		logicManager.addThingLogic(new MouseWheelZoomingLogic());
 		logicManager.addThingLogic(new MousePanningLogic());
 		logicManager.addThingLogic(new SnapToGridLogic(dml));
 		logicManager.addThingLogic(new KeyNudgerLogic());
-		logicManager.addThingLogic(new MarqueeSelectionLogic(ttstlSelected));
+		logicManager.addThingLogic(new MarqueeSelectionLogic(tttl));
 		logicManager.addThingLogic(new DragMovableLogic(dml, stl));
 		logicManager.addThingLogic(new BoxReshapeHandleLogic(stl, dml));
 		SplineReshapeHandleLogic srhl =3D new SplineReshapeHandleLogic(stl, dml);
@@ -322,7 +315,7 @@
 		logicManager.addThingLogic(new RotateTagsLogic());
 		logicManager.addThingLogic(new StructureAssignTypeLogic(AS, xArchRef));
 		logicManager.addThingLogic(new StructureMapSignatureLogic(AS, xArchRef));
-		logicManager.addThingLogic(new StructureEditColorLogic(AS));
+		logicManager.addThingLogic(new StructureEditColorLogic(AS.prefs));
 		logicManager.addThingLogic(new XadlRemoveElementLogic(AS.xarchcs, xArchR=
ef));
 		=

 		logicManager.addThingLogic(new StructureGraphLayoutLogic(AS, xArchRef));
@@ -365,41 +358,4 @@
 			}
 		}
 	}
-
-	@Deprecated
-	public static void writeHints(ArchipelagoServices AS, ObjRef xArchRef, IP=
rogressMonitor monitor){
-		//ObjRef typesContextRef =3D AS.xarch.createContext(xArchRef, "types");
-		//
-		//ObjRef[] archStructureRefs =3D AS.xarch.getAllElements(typesContextRef=
, "archStructure", xArchRef);
-		//if(archStructureRefs.length > 0){
-		//	ObjRef hintsContextRef =3D AS.xarch.createContext(xArchRef, "hints3");
-		//	ObjRef bundleRef =3D HintSupport.getArchipelagoHintsBundleRef(AS, xAr=
chRef);
-		//	AS.xarch.set(bundleRef, "type", "XML");
-		//	for(int i =3D 0; i < archStructureRefs.length; i++){
-		//		String archStructureDescription =3D XadlUtils.getDescription(AS.xarc=
h, archStructureRefs[i]);
-		//		if(archStructureDescription =3D=3D null)
-		//			archStructureDescription =3D "Structure";
-		//		monitor.setTaskName("Storing Hints for " + archStructureDescription);
-		//
-		//		// Find the model for this structure, if there isn't one we do nothi=
ng.
-		//		// If there were already hints in the model, they'll be left alone
-		//		// since they were never loaded out. If there are new hints,
-		//		// they will overwrite the ones in the xADL model
-		//		IBNAWorld world =3D (IBNAWorld)AS.treeNodeDataCache.getData(xArchRef=
, archStructureRefs[i], BNA_WORLD_KEY);
-		//		if(world !=3D null){
-		//			IBNAModel model =3D world.getBNAModel();
-		//			if(model !=3D null){
-		//				// We have new hints for this structure
-		//				// Remove the old set of hints for this structure, if they exist
-		//				ObjRef hintedElementRef =3D HintSupport.findChildHintedElementRef(=
AS, xArchRef, bundleRef, archStructureRefs[i]);
-		//				if(hintedElementRef !=3D null){
-		//					AS.xarch.remove(bundleRef, "hintedElement", hintedElementRef);
-		//				}
-		//				StructureHintSupport.writeHintsForStructure(AS, xArchRef, bundleRe=
f, model, archStructureRefs[i]);
-		//			}
-		//		}
-		//	}
-		//	// AS.xarch.cleanup(xArchRef);
-		//}
-	}
 }

Modified: archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu=
/uci/isr/archstudio4/comp/archipelago/types/StructureFileManagerListener.ja=
va
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/types/StructureFileManagerListener.java (or=
iginal)
+++ archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/types/StructureFileManagerListener.java Wed=
 May  7 10:50:06 2008
@@ -6,22 +6,24 @@
 import edu.uci.isr.archstudio4.comp.fileman.IFileManagerListener;
 import edu.uci.isr.xarchflat.ObjRef;
 =

-public class StructureFileManagerListener implements IFileManagerListener{
+public class StructureFileManagerListener
+    implements IFileManagerListener{
+
 	protected ArchipelagoServices AS =3D null;
 	protected ObjRef xArchRef =3D null;
-	=

+
 	public StructureFileManagerListener(ArchipelagoServices services, ObjRef =
xArchRef){
 		this.AS =3D services;
 		this.xArchRef =3D xArchRef;
 	}
-	=

+
 	public void fileDirtyStateChanged(ObjRef xArchRef, boolean dirty){
 	}
-	=

+
 	public void fileSaving(final ObjRef xArchRef, final IProgressMonitor moni=
tor){
 		if(xArchRef.equals(this.xArchRef)){
 			monitor.subTask("Writing Hints");
-			StructureEditorSupport.writeHints(AS, xArchRef, monitor);
+			//StructureEditorSupport.writeHints(AS, xArchRef, monitor);
 		}
 	}
 }

Modified: archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu=
/uci/isr/archstudio4/comp/archipelago/types/StructureMapper.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/types/StructureMapper.java (original)
+++ archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/types/StructureMapper.java Wed May  7 10:50=
:06 2008
@@ -4,6 +4,7 @@
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.jface.preference.PreferenceConverter;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.graphics.FontData;
@@ -27,6 +28,7 @@
 import edu.uci.isr.bna4.facets.IHasAnchorPoint;
 import edu.uci.isr.bna4.facets.IHasAssemblyData;
 import edu.uci.isr.bna4.facets.IHasMutableBoundingBox;
+import edu.uci.isr.bna4.facets.IHasMutableColor;
 import edu.uci.isr.bna4.facets.IHasMutableSelected;
 import edu.uci.isr.bna4.facets.IHasText;
 import edu.uci.isr.bna4.facets.IRelativeMovable;
@@ -177,6 +179,7 @@
 			Point p =3D ArchipelagoUtils.findOpenSpotForNewThing(bnaModel);
 			brickAssembly.getBoxGlassThing().setBoundingBox(p.x, p.y, 100, 100);
 			UserEditableUtils.addEditableQuality(brickAssembly.getBoxGlassThing(), =
IHasMutableSelected.USER_MAY_SELECT, IHasMutableBoundingBox.USER_MAY_RESIZE=
, IRelativeMovable.USER_MAY_MOVE);
+			UserEditableUtils.addEditableQuality(brickAssembly.getBoxThing(), IHasM=
utableColor.USER_MAY_EDIT_COLOR);
 =

 			brickAssembly.getBoxThing().setGradientFilled(true);
 			brickAssembly.getBoxBorderThing().setLineWidth(1);
@@ -184,11 +187,11 @@
 =

 			switch(kind){
 			case COMPONENT:
-				brickAssembly.getBoxThing().setColor(getDefaultComponentColor(AS));
+				brickAssembly.getBoxThing().setColor(getDefaultComponentColor(AS.prefs=
));
 				brickAssembly.getBoxBorderThing().setCount(2);
 				break;
 			case CONNECTOR:
-				brickAssembly.getBoxThing().setColor(getDefaultConnectorColor(AS));
+				brickAssembly.getBoxThing().setColor(getDefaultConnectorColor(AS.prefs=
));
 				brickAssembly.getBoxBorderThing().setCount(1);
 				break;
 			}
@@ -511,16 +514,16 @@
 		return false;
 	}
 =

-	public static RGB getDefaultComponentColor(ArchipelagoServices AS){
-		if(AS.prefs.contains(ArchipelagoTypesConstants.PREF_DEFAULT_COMPONENT_CO=
LOR)){
-			return PreferenceConverter.getColor(AS.prefs, ArchipelagoTypesConstants=
.PREF_DEFAULT_COMPONENT_COLOR);
+	public static RGB getDefaultComponentColor(IPreferenceStore prefs){
+		if(prefs.contains(ArchipelagoTypesConstants.PREF_DEFAULT_COMPONENT_COLOR=
)){
+			return PreferenceConverter.getColor(prefs, ArchipelagoTypesConstants.PR=
EF_DEFAULT_COMPONENT_COLOR);
 		}
 		return ArchipelagoTypesConstants.DEFAULT_COMPONENT_RGB;
 	}
 =

-	public static RGB getDefaultConnectorColor(ArchipelagoServices AS){
-		if(AS.prefs.contains(ArchipelagoTypesConstants.PREF_DEFAULT_CONNECTOR_CO=
LOR)){
-			return PreferenceConverter.getColor(AS.prefs, ArchipelagoTypesConstants=
.PREF_DEFAULT_CONNECTOR_COLOR);
+	public static RGB getDefaultConnectorColor(IPreferenceStore prefs){
+		if(prefs.contains(ArchipelagoTypesConstants.PREF_DEFAULT_CONNECTOR_COLOR=
)){
+			return PreferenceConverter.getColor(prefs, ArchipelagoTypesConstants.PR=
EF_DEFAULT_CONNECTOR_COLOR);
 		}
 		return ArchipelagoTypesConstants.DEFAULT_CONNECTOR_RGB;
 	}

Modified: archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu=
/uci/isr/archstudio4/comp/archipelago/types/StructureXArchEventHandlerLogic=
.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/types/StructureXArchEventHandlerLogic.java =
(original)
+++ archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/types/StructureXArchEventHandlerLogic.java =
Wed May  7 10:50:06 2008
@@ -7,8 +7,7 @@
 import edu.uci.isr.bna4.BNAUtils;
 import edu.uci.isr.bna4.IBNAModel;
 import edu.uci.isr.bna4.IBNAWorld;
-import edu.uci.isr.bna4.facets.IHasWorld;
-import edu.uci.isr.bna4.logics.tracking.TypedThingSetTrackingLogic;
+import edu.uci.isr.bna4.logics.tracking.TypedThingTrackingLogic;
 import edu.uci.isr.bna4.things.utility.EnvironmentPropertiesThing;
 import edu.uci.isr.xadlutils.XadlUtils;
 import edu.uci.isr.xarchflat.ObjRef;
@@ -19,16 +18,17 @@
 	extends AbstractThingLogic
 	implements IXArchEventHandlerLogic{
 =

+	protected final TypedThingTrackingLogic tttl;
+
 	protected ArchipelagoServices AS =3D null;
-	protected TypedThingSetTrackingLogic<IHasWorld> ttstlView =3D null;
 =

-	public StructureXArchEventHandlerLogic(ArchipelagoServices AS, TypedThing=
SetTrackingLogic<IHasWorld> ttstlView){
+	public StructureXArchEventHandlerLogic(ArchipelagoServices AS, TypedThing=
TrackingLogic tttl){
 		this.AS =3D AS;
-		this.ttstlView =3D ttstlView;
+		this.tttl =3D tttl;
 	}
 =

 	public void handleXArchFlatEvent(XArchFlatEvent evt, IBNAWorld world){
-		ArchipelagoUtils.sendEventToInnerViews(evt, world, ttstlView);
+		ArchipelagoUtils.sendEventToInnerViews(evt, world, tttl);
 =

 		IBNAModel model =3D world.getBNAModel();
 =


Modified: archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu=
/uci/isr/archstudio4/comp/archipelago/types/TypesEditColorLogic.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/types/TypesEditColorLogic.java (original)
+++ archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/types/TypesEditColorLogic.java Wed May  7 1=
0:50:06 2008
@@ -1,49 +1,32 @@
 package edu.uci.isr.archstudio4.comp.archipelago.types;
 =

+import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.swt.graphics.RGB;
 =

-import edu.uci.isr.archstudio4.comp.archipelago.ArchipelagoServices;
-import edu.uci.isr.archstudio4.comp.archipelago.util.AbstractEditColorLogi=
c;
 import edu.uci.isr.bna4.BNAUtils;
 import edu.uci.isr.bna4.IBNAView;
 import edu.uci.isr.bna4.IThing;
-import edu.uci.isr.bna4.assemblies.AssemblyUtils;
-import edu.uci.isr.bna4.assemblies.BoxAssembly;
-import edu.uci.isr.bna4.assemblies.IAssembly;
-import edu.uci.isr.bna4.facets.IHasAssemblyData;
-import edu.uci.isr.bna4.facets.IHasMutableColor;
-import edu.uci.isr.bna4.things.glass.BoxGlassThing;
-import edu.uci.isr.bna4.things.shapes.BoxThing;
-
-public class TypesEditColorLogic extends AbstractEditColorLogic{
-	protected ArchipelagoServices AS =3D null;
-	=

-	public TypesEditColorLogic(ArchipelagoServices services){
-		super();
-		this.AS =3D services;
-	}
+import edu.uci.isr.bna4.logics.editing.EditColorLogic;
 =

-	protected boolean matches(IBNAView view, IThing t){
-		if(t instanceof BoxGlassThing){
-			IThing pt =3D view.getWorld().getBNAModel().getParentThing(t);
-			if(pt !=3D null){
-				if(TypesMapper.isBrickTypeAssemblyRootThing(pt)){
-					return true;
-				}
-			}
-		}
-		return false;
+public class TypesEditColorLogic
+	extends EditColorLogic{
+
+	final protected IPreferenceStore prefs;
+
+	public TypesEditColorLogic(IPreferenceStore prefs){
+		this.prefs =3D prefs;
 	}
-	=

+
+	@Override
 	protected RGB getDefaultRGB(IBNAView view, IThing[] thingsToEdit){
 		RGB defaultRGB =3D null;
-		RGB defaultComponentTypeRGB =3D TypesMapper.getDefaultComponentTypeColor=
(AS);
-		RGB defaultConnectorTypeRGB =3D TypesMapper.getDefaultConnectorTypeColor=
(AS);
-		for(int i =3D 0; i < thingsToEdit.length; i++){
-			IThing pt =3D view.getWorld().getBNAModel().getParentThing(thingsToEdit=
[i]);
+		RGB defaultComponentTypeRGB =3D TypesMapper.getDefaultComponentTypeColor=
(prefs);
+		RGB defaultConnectorTypeRGB =3D TypesMapper.getDefaultConnectorTypeColor=
(prefs);
+		for(IThing element: thingsToEdit){
+			IThing pt =3D view.getWorld().getBNAModel().getParentThing(element);
 			if(pt !=3D null){
 				if(TypesMapper.isComponentTypeAssemblyRootThing(pt)){
-					if((defaultRGB =3D=3D null) || (BNAUtils.nulleq(defaultRGB, defaultCo=
mponentTypeRGB))){
+					if(defaultRGB =3D=3D null || BNAUtils.nulleq(defaultRGB, defaultCompo=
nentTypeRGB)){
 						defaultRGB =3D defaultComponentTypeRGB;
 					}
 					else{
@@ -51,7 +34,7 @@
 					}
 				}
 				else if(TypesMapper.isConnectorTypeAssemblyRootThing(pt)){
-					if((defaultRGB =3D=3D null) || (BNAUtils.nulleq(defaultRGB, defaultCo=
nnectorTypeRGB))){
+					if(defaultRGB =3D=3D null || BNAUtils.nulleq(defaultRGB, defaultConne=
ctorTypeRGB)){
 						defaultRGB =3D defaultConnectorTypeRGB;
 					}
 					else{
@@ -62,27 +45,4 @@
 		}
 		return defaultRGB;
 	}
-	=

-	protected IHasMutableColor getColoredThing(IBNAView view, IThing t){
-		IAssembly assembly =3D AssemblyUtils.getAssemblyWithPart(t);
-		if(assembly instanceof BoxAssembly && TypesMapper.isBrickTypeAssemblyRoo=
tThing(assembly.getRootThing())){
-			return ((BoxAssembly)assembly).getBoxThing();
-		}
-		return null;
-	}
-	=

-	protected RGB getRGB(IBNAView view, IThing t){
-		IHasMutableColor ct =3D getColoredThing(view, t);
-		if(ct !=3D null){
-			return ct.getColor();
-		}
-		return null;
-	}
-	=

-	protected void setRGB(IBNAView view, IThing t, RGB newRGB){
-		IHasMutableColor ct =3D getColoredThing(view, t);
-		if(ct !=3D null){
-			ct.setColor(newRGB);
-		}
-	}
 }

Modified: archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu=
/uci/isr/archstudio4/comp/archipelago/types/TypesEditorSupport.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/types/TypesEditorSupport.java (original)
+++ archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/types/TypesEditorSupport.java Wed May  7 10=
:50:06 2008
@@ -32,10 +32,6 @@
 import edu.uci.isr.bna4.IBNAWorld;
 import edu.uci.isr.bna4.IMutableCoordinateMapper;
 import edu.uci.isr.bna4.IThingLogicManager;
-import edu.uci.isr.bna4.facets.IHasMutableLife;
-import edu.uci.isr.bna4.facets.IHasMutableRotatingOffset;
-import edu.uci.isr.bna4.facets.IHasMutableSelected;
-import edu.uci.isr.bna4.facets.IHasWorld;
 import edu.uci.isr.bna4.logics.background.DirtyWorldThingsLogic;
 import edu.uci.isr.bna4.logics.background.LifeSapperLogic;
 import edu.uci.isr.bna4.logics.background.RotatingOffsetLogic;
@@ -74,9 +70,8 @@
 import edu.uci.isr.bna4.logics.tracking.SelectionTrackingLogic;
 import edu.uci.isr.bna4.logics.tracking.ThingPropertyPrefixTrackingLogic;
 import edu.uci.isr.bna4.logics.tracking.ThingPropertyTrackingLogic;
-import edu.uci.isr.bna4.logics.tracking.TypedThingSetTrackingLogic;
+import edu.uci.isr.bna4.logics.tracking.TypedThingTrackingLogic;
 import edu.uci.isr.bna4.logics.util.ExportBitmapLogic;
-import edu.uci.isr.bna4.things.glass.MappingGlassThing;
 import edu.uci.isr.bna4.things.utility.EnvironmentPropertiesThing;
 import edu.uci.isr.myx.fw.IMyxBrick;
 import edu.uci.isr.myx.fw.MyxRegistry;
@@ -173,6 +168,8 @@
 		IThingLogicManager logicManager =3D bnaWorld.getThingLogicManager();
 =

 		// tracking logics
+		TypedThingTrackingLogic tttl =3D new TypedThingTrackingLogic();
+		logicManager.addThingLogic(tttl);
 		ThingPropertyTrackingLogic tptl =3D new ThingPropertyTrackingLogic();
 		logicManager.addThingLogic(tptl);
 		ThingPropertyPrefixTrackingLogic tpptl =3D new ThingPropertyPrefixTracki=
ngLogic(tptl);
@@ -189,16 +186,6 @@
 		logicManager.addThingLogic(iwel);
 =

 		// other logics
-
-		TypedThingSetTrackingLogic<IHasMutableRotatingOffset> ttstlOffset =3D ne=
w TypedThingSetTrackingLogic<IHasMutableRotatingOffset>(IHasMutableRotating=
Offset.class);
-		logicManager.addThingLogic(ttstlOffset);
-		TypedThingSetTrackingLogic<IHasMutableLife> ttstlLife =3D new TypedThing=
SetTrackingLogic<IHasMutableLife>(IHasMutableLife.class);
-		logicManager.addThingLogic(ttstlLife);
-		TypedThingSetTrackingLogic<IHasMutableSelected> ttstlSelected =3D new Ty=
pedThingSetTrackingLogic<IHasMutableSelected>(IHasMutableSelected.class);
-		logicManager.addThingLogic(ttstlSelected);
-		TypedThingSetTrackingLogic<IHasWorld> ttstlView =3D new TypedThingSetTra=
ckingLogic<IHasWorld>(IHasWorld.class);
-		logicManager.addThingLogic(ttstlView);
-
 		logicManager.addThingLogic(new MouseWheelZoomingLogic());
 		logicManager.addThingLogic(new MousePanningLogic());
 		logicManager.addThingLogic(new MoveWithLogic(rtl));
@@ -208,10 +195,10 @@
 		logicManager.addThingLogic(new MirrorEndpointLogic(rtl));
 		logicManager.addThingLogic(new SnapToGridLogic(dml));
 		logicManager.addThingLogic(new KeyNudgerLogic());
-		logicManager.addThingLogic(new RotatingOffsetLogic(ttstlOffset));
-		logicManager.addThingLogic(new LifeSapperLogic(ttstlLife));
-		logicManager.addThingLogic(new ClickSelectionLogic(ttstlSelected));
-		logicManager.addThingLogic(new MarqueeSelectionLogic(ttstlSelected));
+		logicManager.addThingLogic(new RotatingOffsetLogic(tttl));
+		logicManager.addThingLogic(new LifeSapperLogic(tttl));
+		logicManager.addThingLogic(new ClickSelectionLogic(tttl));
+		logicManager.addThingLogic(new MarqueeSelectionLogic(tttl));
 		logicManager.addThingLogic(new DragMovableLogic(dml, stl));
 		logicManager.addThingLogic(new BoxReshapeHandleLogic(stl, dml));
 		logicManager.addThingLogic(new SplineReshapeHandleLogic(stl, dml));
@@ -223,20 +210,17 @@
 		logicManager.addThingLogic(new ToolTipLogic());
 		logicManager.addThingLogic(new RotaterLogic());
 =

-		ModelBoundsTrackingLogic mbtl =3D new ModelBoundsTrackingLogic();
+		ModelBoundsTrackingLogic mbtl =3D new ModelBoundsTrackingLogic(tttl);
 		logicManager.addThingLogic(mbtl);
 =

-		logicManager.addThingLogic(new WorldThingExternalEventsLogic(ttstlView));
+		logicManager.addThingLogic(new WorldThingExternalEventsLogic(tttl));
 		//logicManager.addThingLogic(new WorldThingDestroyLogic(true));
 =

 		//(signature-interface) mapping handling logics
-		TypedThingSetTrackingLogic<MappingGlassThing> ttstlMapping =3D new Typed=
ThingSetTrackingLogic<MappingGlassThing>(MappingGlassThing.class);
-		logicManager.addThingLogic(ttstlMapping);
-
 		logicManager.addThingLogic(new MaintainInternalWorldMappingsLogic(rtl, t=
ptl, iwel));
 =

 		//XArchEvent handler logics
-		logicManager.addThingLogic(new TypesXArchEventHandlerLogic(AS, xArchRef,=
 ttstlView));
+		logicManager.addThingLogic(new TypesXArchEventHandlerLogic(AS, xArchRef,=
 tttl));
 =

 		logicManager.addThingLogic(new FileDirtyLogic(AS, xArchRef));
 =

@@ -256,7 +240,7 @@
 		logicManager.addThingLogic(new TypesAssignStructureLogic(AS, xArchRef));
 		logicManager.addThingLogic(new TypesCreateSIMLogic(AS, xArchRef));
 		logicManager.addThingLogic(new TypesRemoveDeadSIMLogic(AS, xArchRef));
-		logicManager.addThingLogic(new TypesEditColorLogic(AS));
+		logicManager.addThingLogic(new TypesEditColorLogic(AS.prefs));
 		logicManager.addThingLogic(new TypesRemoveLogic(AS, xArchRef));
 		logicManager.addThingLogic(new ExportBitmapLogic(mbtl));
 =


Modified: archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu=
/uci/isr/archstudio4/comp/archipelago/types/TypesMapper.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/types/TypesMapper.java (original)
+++ archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/types/TypesMapper.java Wed May  7 10:50:06 =
2008
@@ -4,6 +4,7 @@
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.jface.preference.PreferenceConverter;
 import org.eclipse.swt.graphics.FontData;
 import org.eclipse.swt.graphics.Point;
@@ -131,11 +132,11 @@
 =

 			switch(kind){
 			case COMPONENT_TYPE:
-				brickTypeAssembly.getBoxThing().setColor(getDefaultComponentTypeColor(=
AS));
+				brickTypeAssembly.getBoxThing().setColor(getDefaultComponentTypeColor(=
AS.prefs));
 				brickTypeAssembly.getBoxBorderThing().setCount(2);
 				break;
 			case CONNECTOR_TYPE:
-				brickTypeAssembly.getBoxThing().setColor(getDefaultComponentTypeColor(=
AS));
+				brickTypeAssembly.getBoxThing().setColor(getDefaultComponentTypeColor(=
AS.prefs));
 				brickTypeAssembly.getBoxBorderThing().setCount(1);
 				break;
 			}
@@ -452,16 +453,16 @@
 		return a !=3D null && a.isKind(ASSEMBLY_TYPE_SIM);
 	}
 =

-	public static RGB getDefaultComponentTypeColor(ArchipelagoServices AS){
-		if(AS.prefs.contains(ArchipelagoTypesConstants.PREF_DEFAULT_COMPONENT_TY=
PE_COLOR)){
-			return PreferenceConverter.getColor(AS.prefs, ArchipelagoTypesConstants=
.PREF_DEFAULT_COMPONENT_TYPE_COLOR);
+	public static RGB getDefaultComponentTypeColor(IPreferenceStore prefs){
+		if(prefs.contains(ArchipelagoTypesConstants.PREF_DEFAULT_COMPONENT_TYPE_=
COLOR)){
+			return PreferenceConverter.getColor(prefs, ArchipelagoTypesConstants.PR=
EF_DEFAULT_COMPONENT_TYPE_COLOR);
 		}
 		return ArchipelagoTypesConstants.DEFAULT_COMPONENT_TYPE_RGB;
 	}
 =

-	public static RGB getDefaultConnectorTypeColor(ArchipelagoServices AS){
-		if(AS.prefs.contains(ArchipelagoTypesConstants.PREF_DEFAULT_CONNECTOR_TY=
PE_COLOR)){
-			return PreferenceConverter.getColor(AS.prefs, ArchipelagoTypesConstants=
.PREF_DEFAULT_CONNECTOR_TYPE_COLOR);
+	public static RGB getDefaultConnectorTypeColor(IPreferenceStore prefs){
+		if(prefs.contains(ArchipelagoTypesConstants.PREF_DEFAULT_CONNECTOR_TYPE_=
COLOR)){
+			return PreferenceConverter.getColor(prefs, ArchipelagoTypesConstants.PR=
EF_DEFAULT_CONNECTOR_TYPE_COLOR);
 		}
 		return ArchipelagoTypesConstants.DEFAULT_CONNECTOR_TYPE_RGB;
 	}

Modified: archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu=
/uci/isr/archstudio4/comp/archipelago/types/TypesXArchEventHandlerLogic.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/types/TypesXArchEventHandlerLogic.java (ori=
ginal)
+++ archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/types/TypesXArchEventHandlerLogic.java Wed =
May  7 10:50:06 2008
@@ -7,39 +7,46 @@
 import edu.uci.isr.bna4.BNAUtils;
 import edu.uci.isr.bna4.IBNAModel;
 import edu.uci.isr.bna4.IBNAWorld;
-import edu.uci.isr.bna4.facets.IHasWorld;
-import edu.uci.isr.bna4.logics.tracking.TypedThingSetTrackingLogic;
+import edu.uci.isr.bna4.logics.tracking.TypedThingTrackingLogic;
 import edu.uci.isr.bna4.things.utility.EnvironmentPropertiesThing;
 import edu.uci.isr.xadlutils.XadlUtils;
 import edu.uci.isr.xarchflat.ObjRef;
 import edu.uci.isr.xarchflat.XArchFlatEvent;
 import edu.uci.isr.xarchflat.XArchPath;
 =

-public class TypesXArchEventHandlerLogic extends AbstractThingLogic implem=
ents IXArchEventHandlerLogic{
+public class TypesXArchEventHandlerLogic
+	extends AbstractThingLogic
+	implements IXArchEventHandlerLogic{
+
+	protected final TypedThingTrackingLogic tttl;
+
 	protected ArchipelagoServices AS =3D null;
 	protected ObjRef xArchRef =3D null;
-	protected TypedThingSetTrackingLogic<IHasWorld> ttstlView =3D null;
 =

-	public TypesXArchEventHandlerLogic(ArchipelagoServices AS, ObjRef xArchRe=
f, TypedThingSetTrackingLogic<IHasWorld> ttstlView){
+	public TypesXArchEventHandlerLogic(ArchipelagoServices AS, ObjRef xArchRe=
f, TypedThingTrackingLogic tttl){
 		this.AS =3D AS;
 		this.xArchRef =3D xArchRef;
-		this.ttstlView =3D ttstlView;
+		this.tttl =3D tttl;
 	}
-	=

+
 	public void handleXArchFlatEvent(XArchFlatEvent evt, IBNAWorld world){
-		ArchipelagoUtils.sendEventToInnerViews(evt, world, ttstlView);
+		ArchipelagoUtils.sendEventToInnerViews(evt, world, tttl);
 =

 		IBNAModel model =3D world.getBNAModel();
 		XArchPath sourcePath =3D evt.getSourcePath();
 		String sourcePathString =3D null;
-		if(sourcePath !=3D null) sourcePathString =3D sourcePath.toTagsOnlyStrin=
g();
-		=

+		if(sourcePath !=3D null){
+			sourcePathString =3D sourcePath.toTagsOnlyString();
+		}
+
 		XArchPath targetPath =3D evt.getTargetPath();
 		String targetPathString =3D null;
-		if(targetPath !=3D null) targetPathString =3D targetPath.toTagsOnlyStrin=
g();
+		if(targetPath !=3D null){
+			targetPathString =3D targetPath.toTagsOnlyString();
+		}
 =

 		//We only handle things that occur under xArch/archTypes
-		if((sourcePathString =3D=3D null) || (!sourcePathString.startsWith("xArc=
h/archTypes"))){
+		if(sourcePathString =3D=3D null || !sourcePathString.startsWith("xArch/a=
rchTypes")){
 			return;
 		}
 =

@@ -68,63 +75,63 @@
 			return;
 		}
 		String modifiedTypeID =3D XadlUtils.getID(AS.xarch, modifiedTypeRef);
-		=

+
 		EnvironmentPropertiesThing ept =3D BNAUtils.getEnvironmentPropertiesThin=
g(model);
 		String editingTypeID =3D (String)ept.getProperty(ArchipelagoUtils.XARCH_=
ID_PROPERTY_NAME);
 		ObjRef editingTypeRef =3D AS.xarch.getByID(xArchRef, editingTypeID);
-		=

+
 		if(!BNAUtils.nulleq(modifiedTypeID, editingTypeID)){
 			//This is an event for an ArchType, but not the one we're currently edi=
ting
 			//TODO: Process subarchitectures recursively
 			return;
 		}
 =

-		if((evt.getEventType() =3D=3D XArchFlatEvent.CLEAR_EVENT) || (evt.getEve=
ntType() =3D=3D XArchFlatEvent.REMOVE_EVENT)){
-			if((sourcePathString !=3D null) && (sourcePathString.equals("xArch/arch=
Types"))){
-				if((targetPathString !=3D null) && (targetPathString.equals("component=
Type"))){
+		if(evt.getEventType() =3D=3D XArchFlatEvent.CLEAR_EVENT || evt.getEventT=
ype() =3D=3D XArchFlatEvent.REMOVE_EVENT){
+			if(sourcePathString !=3D null && sourcePathString.equals("xArch/archTyp=
es")){
+				if(targetPathString !=3D null && targetPathString.equals("componentTyp=
e")){
 					AS.editor.clearEditor();
 					AS.editor.displayDefaultEditor();
 					return;
 				}
-				else if((targetPathString !=3D null) && (targetPathString.equals("conn=
ectorType"))){
+				else if(targetPathString !=3D null && targetPathString.equals("connect=
orType")){
 					AS.editor.clearEditor();
 					AS.editor.displayDefaultEditor();
 					return;
 				}
-				else if((targetPathString !=3D null) && (targetPathString.equals("inte=
rfaceType"))){
+				else if(targetPathString !=3D null && targetPathString.equals("interfa=
ceType")){
 					AS.editor.clearEditor();
 					AS.editor.displayDefaultEditor();
 					return;
 				}
 			}
-			else if((sourcePathString !=3D null) && (sourcePathString.startsWith("x=
Arch/archTypes/componentType"))){
+			else if(sourcePathString !=3D null && sourcePathString.startsWith("xArc=
h/archTypes/componentType")){
 				TypesMapper.updateComponentType(AS, world, srcAncestors[srcAncestors.l=
ength - 3]);
 			}
-			else if((sourcePathString !=3D null) && (sourcePathString.startsWith("x=
Arch/archTypes/connectorType"))){
+			else if(sourcePathString !=3D null && sourcePathString.startsWith("xArc=
h/archTypes/connectorType")){
 				TypesMapper.updateConnectorType(AS, world, srcAncestors[srcAncestors.l=
ength - 3]);
 			}
-			else if((sourcePathString !=3D null) && (sourcePathString.startsWith("x=
Arch/archTypes/interfaceType"))){
+			else if(sourcePathString !=3D null && sourcePathString.startsWith("xArc=
h/archTypes/interfaceType")){
 				TypesMapper.updateInterfaceType(AS, world, srcAncestors[srcAncestors.l=
ength - 3]);
 			}
 		}
-		=

+
 		if(targetPathString =3D=3D null){
 			targetPath =3D sourcePath;
 		}
-		=

-		if((evt.getTarget() =3D=3D null) || (!(evt.getTarget() instanceof ObjRef=
))){
+
+		if(evt.getTarget() =3D=3D null || !(evt.getTarget() instanceof ObjRef)){
 			return;
 		}
 		//ObjRef[] targetAncestorRefs =3D AS.xarch.getAllAncestors((ObjRef)evt.g=
etTarget());
-		if((targetPathString !=3D null) && (targetPathString.startsWith("xArch/a=
rchTypes/componentType"))){
+		if(targetPathString !=3D null && targetPathString.startsWith("xArch/arch=
Types/componentType")){
 			TypesMapper.updateComponentType(AS, world, srcAncestors[srcAncestors.le=
ngth - 3]);
 		}
-		else if((targetPathString !=3D null) && (targetPathString.startsWith("xA=
rch/archTypes/connectorType"))){
+		else if(targetPathString !=3D null && targetPathString.startsWith("xArch=
/archTypes/connectorType")){
 			TypesMapper.updateConnectorType(AS, world, srcAncestors[srcAncestors.le=
ngth - 3]);
 		}
-		else if((targetPathString !=3D null) && (targetPathString.startsWith("xA=
rch/archTypes/interfaceType"))){
+		else if(targetPathString !=3D null && targetPathString.startsWith("xArch=
/archTypes/interfaceType")){
 			TypesMapper.updateInterfaceType(AS, world, srcAncestors[srcAncestors.le=
ngth - 3]);
 		}
 	}
-	=

+
 }

Modified: archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu=
/uci/isr/archstudio4/comp/archipelago/util/ArrayPropertyCoder.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/util/ArrayPropertyCoder.java (original)
+++ archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/util/ArrayPropertyCoder.java Wed May  7 10:=
50:06 2008
@@ -6,18 +6,20 @@
 import edu.uci.isr.archstudio4.comp.archipelago.ArchipelagoUtils;
 import edu.uci.isr.xarchflat.ObjRef;
 =

-public class ArrayPropertyCoder implements IPropertyCoder{
+ at Deprecated
+public class ArrayPropertyCoder
+    implements IPropertyCoder{
 =

 	public boolean encode(IPropertyCoder masterCoder, ArchipelagoServices AS,=
 ObjRef xArchRef, ObjRef propertyValueRef, Object propertyValue){
 		Class c =3D propertyValue.getClass();
 		if(c.isArray()){
 			AS.xarch.set(propertyValueRef, "type", ArchipelagoUtils.getClassName(c)=
);
-			=

+
 			ObjRef hintsContextRef =3D AS.xarch.createContext(xArchRef, "hints3");
 			Object[] arr =3D (Object[])propertyValue;
-			for(int i =3D 0; i < arr.length; i++){
-				ObjRef childValueRef =3D (ObjRef)AS.xarch.create(hintsContextRef, "pro=
pertyValue");
-				if(masterCoder.encode(masterCoder, AS, xArchRef, childValueRef, arr[i]=
)){
+			for(Object element: arr){
+				ObjRef childValueRef =3D AS.xarch.create(hintsContextRef, "propertyVal=
ue");
+				if(masterCoder.encode(masterCoder, AS, xArchRef, childValueRef, elemen=
t)){
 					AS.xarch.add(propertyValueRef, "value", childValueRef);
 				}
 			}
@@ -33,7 +35,7 @@
 		}
 		if(propertyType.endsWith("[]")){
 			String innerPropertyType =3D propertyType.substring(0, propertyType.len=
gth() - 2);
-			=

+
 			ObjRef[] refs =3D AS.xarch.getAll(propertyValueRef, "value");
 			try{
 				Class cc =3D HintSupport.getInstance().classForName(getRealClassName(i=
nnerPropertyType));
@@ -49,7 +51,7 @@
 		}
 		return null;
 	}
-	=

+
 	private static String getRealClassName(String name){
 		if(name.endsWith("[]")){
 			String internalName =3D getRealClassName(name.substring(0, name.length(=
) - 2));
@@ -60,8 +62,9 @@
 				return "[L" + getRealClassName(name.substring(0, name.length() - 2)) +=
 ";";
 			}
 		}
-		else return name;
+		else{
+			return name;
+		}
 	}
 =

-
 }

Modified: archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu=
/uci/isr/archstudio4/comp/archipelago/util/BasicPropertyCoder.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/util/BasicPropertyCoder.java (original)
+++ archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/util/BasicPropertyCoder.java Wed May  7 10:=
50:06 2008
@@ -3,7 +3,9 @@
 import edu.uci.isr.archstudio4.comp.archipelago.ArchipelagoServices;
 import edu.uci.isr.xarchflat.ObjRef;
 =

-public class BasicPropertyCoder implements IPropertyCoder{
+ at Deprecated
+public class BasicPropertyCoder
+    implements IPropertyCoder{
 =

 	public boolean encode(IPropertyCoder masterCoder, ArchipelagoServices AS,=
 ObjRef xArchRef, ObjRef propertyValueRef, Object propertyValue){
 		if(propertyValue instanceof java.lang.String){
@@ -59,12 +61,12 @@
 		if(propertyType =3D=3D null){
 			return null;
 		}
-		=

+
 		String data =3D (String)AS.xarch.get(propertyValueRef, "data");
 		if(data =3D=3D null){
 			return null;
 		}
-		=

+
 		try{
 			if(propertyType.equals("java.lang.String")){
 				return data;

Modified: archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu=
/uci/isr/archstudio4/comp/archipelago/util/BasicSWTPropertyCoder.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/util/BasicSWTPropertyCoder.java (original)
+++ archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/util/BasicSWTPropertyCoder.java Wed May  7 =
10:50:06 2008
@@ -7,7 +7,9 @@
 import edu.uci.isr.archstudio4.comp.archipelago.ArchipelagoServices;
 import edu.uci.isr.xarchflat.ObjRef;
 =

-public class BasicSWTPropertyCoder implements IPropertyCoder{
+ at Deprecated
+public class BasicSWTPropertyCoder
+    implements IPropertyCoder{
 =

 	public boolean encode(IPropertyCoder masterCoder, ArchipelagoServices AS,=
 ObjRef xArchRef, ObjRef propertyValueRef, Object propertyValue){
 		if(propertyValue instanceof Point){
@@ -27,25 +29,25 @@
 		}
 		return false;
 	}
-	=

+
 	public Object decode(IPropertyCoder masterCoder, ArchipelagoServices AS, =
ObjRef xArchRef, ObjRef propertyValueRef) throws PropertyDecodeException{
 		String propertyType =3D (String)AS.xarch.get(propertyValueRef, "type");
 		if(propertyType =3D=3D null){
 			return null;
 		}
-		=

+
 		String data =3D (String)AS.xarch.get(propertyValueRef, "data");
 		if(data =3D=3D null){
 			return null;
 		}
-		=

+
 		if(propertyType.equals(Rectangle.class.getName())){
 			try{
 				String[] ss =3D data.split(",");
 				if(ss.length !=3D 4){
 					throw new PropertyDecodeException("Can't decode rectangle: " + data);
 				}
-				Rectangle r =3D new Rectangle(0,0,0,0);
+				Rectangle r =3D new Rectangle(0, 0, 0, 0);
 				r.x =3D Integer.parseInt(ss[0]);
 				r.y =3D Integer.parseInt(ss[1]);
 				r.width =3D Integer.parseInt(ss[2]);
@@ -62,7 +64,7 @@
 				if(ss.length !=3D 2){
 					throw new PropertyDecodeException("Can't decode point: " + data);
 				}
-				Point p =3D new Point(0,0);
+				Point p =3D new Point(0, 0);
 				p.x =3D Integer.parseInt(ss[0]);
 				p.y =3D Integer.parseInt(ss[1]);
 				return p;
@@ -77,7 +79,7 @@
 				if(ss.length !=3D 3){
 					throw new PropertyDecodeException("Can't decode RGB: " + data);
 				}
-				RGB rgb =3D new RGB(0,0,0);
+				RGB rgb =3D new RGB(0, 0, 0);
 				rgb.red =3D Integer.parseInt(ss[0]);
 				rgb.green =3D Integer.parseInt(ss[1]);
 				rgb.blue =3D Integer.parseInt(ss[2]);

Modified: archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu=
/uci/isr/archstudio4/comp/archipelago/util/EnumPropertyCoder.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/util/EnumPropertyCoder.java (original)
+++ archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/util/EnumPropertyCoder.java Wed May  7 10:5=
0:06 2008
@@ -4,7 +4,9 @@
 import edu.uci.isr.archstudio4.comp.archipelago.ArchipelagoUtils;
 import edu.uci.isr.xarchflat.ObjRef;
 =

-public class EnumPropertyCoder implements IPropertyCoder{
+ at Deprecated
+public class EnumPropertyCoder
+    implements IPropertyCoder{
 =

 	public boolean encode(IPropertyCoder masterCoder, ArchipelagoServices AS,=
 ObjRef xArchRef, ObjRef propertyValueRef, Object propertyValue){
 		Class c =3D propertyValue.getClass();
@@ -24,7 +26,7 @@
 		}
 		if(propertyType.endsWith("[E]")){
 			String innerPropertyType =3D propertyType.substring(0, propertyType.len=
gth() - 3);
-			=

+
 			String data =3D (String)AS.xarch.get(propertyValueRef, "data");
 			if(data !=3D null){
 				try{

Modified: archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu=
/uci/isr/archstudio4/comp/archipelago/util/HintSupport.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/util/HintSupport.java (original)
+++ archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/util/HintSupport.java Wed May  7 10:50:06 2=
008
@@ -7,12 +7,15 @@
 import edu.uci.isr.xadlutils.XadlUtils;
 import edu.uci.isr.xarchflat.ObjRef;
 =

-public class HintSupport implements IPropertyCoder{
-	=

+ at Deprecated
+public class HintSupport
+    implements IPropertyCoder{
+
 	protected static HintSupport __instance =3D null;
-	=

-	protected HintSupport(){}
-	=

+
+	protected HintSupport(){
+	}
+
 	public void writeTarget(ArchipelagoServices AS, ObjRef xArchRef, ObjRef e=
ltRef, ObjRef targetRef){
 		if(targetRef !=3D null){
 			String targetID =3D XadlUtils.getID(AS.xarch, targetRef);
@@ -21,10 +24,12 @@
 			}
 		}
 	}
-	=

+
 	public void writeProperty(ArchipelagoServices AS, ObjRef xArchRef, ObjRef=
 eltRef, String name, Object value){
-		if(value =3D=3D null) return;
-		=

+		if(value =3D=3D null){
+			return;
+		}
+
 		ObjRef hintsContextRef =3D AS.xarch.createContext(xArchRef, "hints3");
 		ObjRef propertyRef =3D AS.xarch.create(hintsContextRef, "property");
 =

@@ -42,13 +47,13 @@
 		}
 		return null;
 	}
-	=

+
 	public Object readProperty(ArchipelagoServices AS, ObjRef xArchRef, ObjRe=
f eltRef, String name){
 		ObjRef[] propertyRefs =3D AS.xarch.getAll(eltRef, "property");
-		for(int i =3D 0; i < propertyRefs.length; i++){
-			String n =3D (String)AS.xarch.get(propertyRefs[i], "name");
-			if((n !=3D null) && (n.equals(name))){
-				ObjRef propertyValueRef =3D (ObjRef)AS.xarch.get(propertyRefs[i], "val=
ue");
+		for(ObjRef propertyRef: propertyRefs){
+			String n =3D (String)AS.xarch.get(propertyRef, "name");
+			if(n !=3D null && n.equals(name)){
+				ObjRef propertyValueRef =3D (ObjRef)AS.xarch.get(propertyRef, "value");
 				try{
 					Object o =3D decode(this, AS, xArchRef, propertyValueRef);
 					return o;
@@ -59,14 +64,14 @@
 		}
 		return null;
 	}
-	=

+
 	public Class classForName(String name) throws ClassNotFoundException{
 		try{
 			Class c =3D Class.forName(name);
 			return c;
 		}
 		catch(ClassNotFoundException cnfe){
-			for(ClassLoader cl : classLoaders){
+			for(ClassLoader cl: classLoaders){
 				try{
 					Class c =3D Class.forName(name, true, cl);
 					return c;
@@ -74,7 +79,7 @@
 				catch(ClassNotFoundException cnfe2){
 				}
 			}
-			for(IPropertyCoder pc : propertyCoders){
+			for(IPropertyCoder pc: propertyCoders){
 				try{
 					Class c =3D Class.forName(name, true, pc.getClass().getClassLoader());
 					return c;
@@ -85,44 +90,44 @@
 			throw cnfe;
 		}
 	}
-	=

+
 	protected Set<ClassLoader> classLoaderSet =3D new HashSet<ClassLoader>();
 	protected ClassLoader[] classLoaders =3D new ClassLoader[0];
-	=

+
 	public void registerClassLoader(ClassLoader cl){
 		classLoaderSet.add(cl);
 		classLoaders =3D classLoaderSet.toArray(new ClassLoader[classLoaderSet.s=
ize()]);
 	}
-	=

+
 	public void unregisterClassloader(ClassLoader cl){
 		classLoaderSet.remove(cl);
 		classLoaders =3D classLoaderSet.toArray(new ClassLoader[classLoaderSet.s=
ize()]);
 	}
-	=

+
 	protected Set<IPropertyCoder> propertyCoderSet =3D new HashSet<IPropertyC=
oder>();
 	protected IPropertyCoder[] propertyCoders =3D new IPropertyCoder[0];
-	=

+
 	public void registerPropertyCoder(IPropertyCoder coder){
 		propertyCoderSet.add(coder);
 		propertyCoders =3D propertyCoderSet.toArray(new IPropertyCoder[propertyC=
oderSet.size()]);
 	}
-	=

+
 	public void unregisterPropertyCoder(IPropertyCoder coder){
 		propertyCoderSet.remove(coder);
 		propertyCoders =3D propertyCoderSet.toArray(new IPropertyCoder[propertyC=
oderSet.size()]);
 	}
-	=

+
 	public boolean encode(IPropertyCoder masterCoder, ArchipelagoServices AS,=
 ObjRef xArchRef, ObjRef propertyValueRef, Object propertyValue){
-		for(IPropertyCoder pc : propertyCoders){
+		for(IPropertyCoder pc: propertyCoders){
 			if(pc.encode(this, AS, xArchRef, propertyValueRef, propertyValue)){
 				return true;
 			}
 		}
 		return false;
 	}
-	=

+
 	public Object decode(IPropertyCoder masterCoder, ArchipelagoServices AS, =
ObjRef xArchRef, ObjRef propertyValueRef) throws PropertyDecodeException{
-		for(IPropertyCoder pc : propertyCoders){
+		for(IPropertyCoder pc: propertyCoders){
 			Object o =3D pc.decode(this, AS, xArchRef, propertyValueRef);
 			if(o !=3D null){
 				return o;
@@ -130,7 +135,7 @@
 		}
 		return null;
 	}
-	=

+
 	public static HintSupport getInstance(){
 		if(__instance =3D=3D null){
 			__instance =3D new HintSupport();
@@ -141,7 +146,7 @@
 		}
 		return __instance;
 	}
-	=

+
 	public static ObjRef getHintsRootRef(ArchipelagoServices AS, ObjRef xArch=
Ref){
 		ObjRef hintsContextRef =3D AS.xarch.createContext(xArchRef, "hints3");
 		ObjRef rootRef =3D AS.xarch.getElement(hintsContextRef, "renderingHints3=
", xArchRef);
@@ -152,18 +157,18 @@
 		AS.xarch.add(xArchRef, "Object", rootRef);
 		return rootRef;
 	}
-	=

+
 	public static ObjRef getArchipelagoHintsBundleRef(ArchipelagoServices AS,=
 ObjRef xArchRef){
 		ObjRef hintsRootRef =3D getHintsRootRef(AS, xArchRef);
 		ObjRef[] bundleRefs =3D AS.xarch.getAll(hintsRootRef, "hintedElement");
-		for(int i =3D 0; i < bundleRefs.length; i++){
-			if(AS.xarch.isInstanceOf(bundleRefs[i], "hints3#HintBundle")){
-				String maintainer =3D (String)AS.xarch.get(bundleRefs[i], "maintainer"=
);
-				String version =3D (String)AS.xarch.get(bundleRefs[i], "version");
-				=

-				if((maintainer !=3D null) && (version !=3D null)){
-					if(maintainer.equals("edu.uci.isr.archstudio4.comp.archipelago") && (=
version.equals("4.0.0"))){
-						return bundleRefs[i];
+		for(ObjRef bundleRef: bundleRefs){
+			if(AS.xarch.isInstanceOf(bundleRef, "hints3#HintBundle")){
+				String maintainer =3D (String)AS.xarch.get(bundleRef, "maintainer");
+				String version =3D (String)AS.xarch.get(bundleRef, "version");
+
+				if(maintainer !=3D null && version !=3D null){
+					if(maintainer.equals("edu.uci.isr.archstudio4.comp.archipelago") && v=
ersion.equals("4.0.0")){
+						return bundleRef;
 					}
 				}
 			}
@@ -172,64 +177,61 @@
 		ObjRef bundleRef =3D AS.xarch.create(hintsContextRef, "hintBundle");
 		AS.xarch.set(bundleRef, "maintainer", "edu.uci.isr.archstudio4.comp.arch=
ipelago");
 		AS.xarch.set(bundleRef, "version", "4.0.0");
-		=

+
 		AS.xarch.add(hintsRootRef, "hintedElement", bundleRef);
 		return bundleRef;
 	}
-	=

+
 	/*
-	public static ObjRef findHintedElementRef(ArchipelagoServices AS, ObjRef =
xArchRef, ObjRef bundleRef, String targetID){
-		ObjRef[] topLevelRefs =3D AS.xarch.getAll(bundleRef, "hintedElement");
-		String targetHref =3D "#" + targetID;
-		for(int i =3D 0; i < topLevelRefs.length; i++){
-			ObjRef targetRef =3D (ObjRef)AS.xarch.get(topLevelRefs[i], "target");
-			if(targetRef !=3D null){
-				String href =3D XadlUtils.getHref(AS.xarch, targetRef);
-				if((href !=3D null) && (href.equals(targetHref))){
-					return topLevelRefs[i];
-				}
-			}
-		}
-		return null;
-	}
-	*/
+	 * public static ObjRef findHintedElementRef(ArchipelagoServices AS, ObjR=
ef
+	 * xArchRef, ObjRef bundleRef, String targetID){ ObjRef[] topLevelRefs =
=3D
+	 * AS.xarch.getAll(bundleRef, "hintedElement"); String targetHref =3D "#"=
 +
+	 * targetID; for(int i =3D 0; i < topLevelRefs.length; i++){ ObjRef targe=
tRef =3D
+	 * (ObjRef)AS.xarch.get(topLevelRefs[i], "target"); if(targetRef !=3D nul=
l){
+	 * String href =3D XadlUtils.getHref(AS.xarch, targetRef); if((href !=3D =
null) &&
+	 * (href.equals(targetHref))){ return topLevelRefs[i]; } } } return null;=
 }
+	 */
 =

 	public static ObjRef findChildHintedElementRef(ArchipelagoServices AS, Ob=
jRef xArchRef, ObjRef rootRef, ObjRef targetRef){
 		ObjRef[] subRefs =3D AS.xarch.getAll(rootRef, "hintedElement");
-		for(int i =3D 0; i < subRefs.length; i++){
-			ObjRef tRef =3D XadlUtils.resolveXLink(AS.xarch, subRefs[i], "target");
+		for(ObjRef subRef: subRefs){
+			ObjRef tRef =3D XadlUtils.resolveXLink(AS.xarch, subRef, "target");
 			if(equals(AS, targetRef, tRef)){
-				return subRefs[i];
+				return subRef;
 			}
 		}
 		return null;
 	}
-	=

+
 	public static ObjRef findHintedElementRef(ArchipelagoServices AS, ObjRef =
xArchRef, ObjRef rootRef, ObjRef targetRef){
 		ObjRef tRef =3D XadlUtils.resolveXLink(AS.xarch, rootRef, "target");
 		if(equals(AS, targetRef, tRef)){
 			return rootRef;
 		}
-		=

+
 		ObjRef[] subRefs =3D AS.xarch.getAll(rootRef, "hintedElement");
-		for(int i =3D 0; i < subRefs.length; i++){
-			ObjRef matchRef =3D findHintedElementRef(AS, xArchRef, subRefs[i], targ=
etRef);
+		for(ObjRef subRef: subRefs){
+			ObjRef matchRef =3D findHintedElementRef(AS, xArchRef, subRef, targetRe=
f);
 			if(matchRef !=3D null){
 				return matchRef;
 			}
 		}
 		return null;
 	}
-	=

+
 	private static boolean equals(ArchipelagoServices AS, ObjRef ref1, ObjRef=
 ref2){
-		if(ref1 =3D=3D ref2) return true;
-		if(ref1.equals(ref2)) return true;
-		=

+		if(ref1 =3D=3D ref2){
+			return true;
+		}
+		if(ref1.equals(ref2)){
+			return true;
+		}
+
 		try{
 			String id1 =3D XadlUtils.getID(AS.xarch, ref1);
 			String id2 =3D XadlUtils.getID(AS.xarch, ref2);
-			=

-			if((id1 !=3D null) && (id2 !=3D null) && (id1.equals(id2))){
+
+			if(id1 !=3D null && id2 !=3D null && id1.equals(id2)){
 				return true;
 			}
 		}
@@ -237,5 +239,5 @@
 		}
 		return false;
 	}
-	=

+
 }

Modified: archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu=
/uci/isr/archstudio4/comp/archipelago/util/IPropertyCoder.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/util/IPropertyCoder.java (original)
+++ archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/util/IPropertyCoder.java Wed May  7 10:50:0=
6 2008
@@ -3,8 +3,11 @@
 import edu.uci.isr.archstudio4.comp.archipelago.ArchipelagoServices;
 import edu.uci.isr.xarchflat.ObjRef;
 =

+ at Deprecated
 public interface IPropertyCoder{
+
 	public boolean encode(IPropertyCoder masterCoder, ArchipelagoServices AS,=
 ObjRef xArchRef, ObjRef propertyValueRef, Object propertyValue);
+
 	public Object decode(IPropertyCoder masterCoder, ArchipelagoServices AS, =
ObjRef xArchRef, ObjRef propertyValueRef) throws PropertyDecodeException;
-	=

+
 }

Modified: archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu=
/uci/isr/archstudio4/comp/archipelago/util/PropertyDecodeException.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/util/PropertyDecodeException.java (original)
+++ archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/util/PropertyDecodeException.java Wed May  =
7 10:50:06 2008
@@ -1,6 +1,8 @@
 package edu.uci.isr.archstudio4.comp.archipelago.util;
 =

-public class PropertyDecodeException extends Exception{
+ at Deprecated
+public class PropertyDecodeException
+    extends Exception{
 =

 	public PropertyDecodeException(){
 	}

Modified: archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu=
/uci/isr/archstudio4/comp/archipelago/variants/VariantsEventListener.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/variants/VariantsEventListener.java (origin=
al)
+++ archstudio4/branches/enhancements/edu.uci.isr.archstudio4/src/edu/uci/i=
sr/archstudio4/comp/archipelago/variants/VariantsEventListener.java Wed May=
  7 10:50:06 2008
@@ -18,7 +18,6 @@
 import edu.uci.isr.bna4.IBNAWorld;
 import edu.uci.isr.bna4.IThingLogicManager;
 import edu.uci.isr.bna4.assemblies.BoxAssembly;
-import edu.uci.isr.bna4.facets.IHasWorld;
 import edu.uci.isr.bna4.logics.coordinating.MirrorAnchorPointLogic;
 import edu.uci.isr.bna4.logics.coordinating.MirrorBoundingBoxLogic;
 import edu.uci.isr.bna4.logics.coordinating.MoveWithLogic;
@@ -28,7 +27,7 @@
 import edu.uci.isr.bna4.logics.tracking.ModelBoundsTrackingLogic;
 import edu.uci.isr.bna4.logics.tracking.ReferenceTrackingLogic;
 import edu.uci.isr.bna4.logics.tracking.ThingPropertyTrackingLogic;
-import edu.uci.isr.bna4.logics.tracking.TypedThingSetTrackingLogic;
+import edu.uci.isr.bna4.logics.tracking.TypedThingTrackingLogic;
 import edu.uci.isr.bna4.things.utility.EnvironmentPropertiesThing;
 import edu.uci.isr.xadlutils.XadlUtils;
 import edu.uci.isr.xarchflat.ObjRef;
@@ -101,17 +100,19 @@
 	/*
 	 * protected void handle(StructureEvents.InterfaceUpdatedEvent evt){ ObjR=
ef
 	 * interfaceRef =3D evt.getInterfaceRef();
-	 * evt.getInterfaceAssembly().getBoxBorderThing().setLineStyle(SWT.LINE_S=
OLID);
-	 * if(interfaceRef !=3D null){ if(AS.xarch.isInstanceOf(interfaceRef,
-	 * "options#OptionalInterface")){ if(OptionsUtils.isOptional(AS.xarch,
-	 * interfaceRef)){
-	 * evt.getInterfaceAssembly().getBoxBorderThing().setLineStyle(SWT.LINE_D=
ASH); } } } }
-	 * protected void handle(StructureEvents.LinkUpdatedEvent evt){ ObjRef
-	 * linkRef =3D evt.getLinkRef();
+	 * evt.getInterfaceAssembly().getBoxBorderThing
+	 * ().setLineStyle(SWT.LINE_SOLID); if(interfaceRef !=3D null){
+	 * if(AS.xarch.isInstanceOf(interfaceRef, "options#OptionalInterface")){
+	 * if(OptionsUtils.isOptional(AS.xarch, interfaceRef)){
+	 * evt.getInterfaceAssembly
+	 * ().getBoxBorderThing().setLineStyle(SWT.LINE_DASH); } } } } protected
+	 * void handle(StructureEvents.LinkUpdatedEvent evt){ ObjRef linkRef =3D
+	 * evt.getLinkRef();
 	 * evt.getLinkAssembly().getSplineThing().setLineStyle(SWT.LINE_SOLID);
 	 * if(linkRef !=3D null){ if(AS.xarch.isInstanceOf(linkRef,
 	 * "options#OptionalLink")){ if(OptionsUtils.isOptional(AS.xarch, linkRef=
)){
-	 * evt.getLinkAssembly().getSplineThing().setLineStyle(SWT.LINE_DASH); } =
} } }
+	 * evt.getLinkAssembly().getSplineThing().setLineStyle(SWT.LINE_DASH); } =
} }
+	 * }
 	 */
 =

 	protected void handle(TypesEvents.WorldCreatedEvent evt){
@@ -189,11 +190,11 @@
 					}
 					switch(typeKind){
 					case COMPONENT_TYPE:
-						typeAssembly.getBoxThing().setColor(TypesMapper.getDefaultComponentT=
ypeColor(AS));
+						typeAssembly.getBoxThing().setColor(TypesMapper.getDefaultComponentT=
ypeColor(AS.prefs));
 						typeAssembly.getBoxBorderThing().setCount(2);
 						break;
 					case CONNECTOR_TYPE:
-						typeAssembly.getBoxThing().setColor(TypesMapper.getDefaultConnectorT=
ypeColor(AS));
+						typeAssembly.getBoxThing().setColor(TypesMapper.getDefaultConnectorT=
ypeColor(AS.prefs));
 						typeAssembly.getBoxBorderThing().setCount(1);
 						break;
 					}
@@ -204,24 +205,23 @@
 		IBNAWorld w =3D new DefaultBNAWorld("VARIANT", m);
 		IThingLogicManager logicManager =3D w.getThingLogicManager();
 =

+		TypedThingTrackingLogic tttl =3D new TypedThingTrackingLogic();
+		logicManager.addThingLogic(tttl);
 		ThingPropertyTrackingLogic tptl =3D new ThingPropertyTrackingLogic();
 		logicManager.addThingLogic(tptl);
 		ReferenceTrackingLogic rtl =3D new ReferenceTrackingLogic();
 		logicManager.addThingLogic(rtl);
 =

-		TypedThingSetTrackingLogic<IHasWorld> ttstlView =3D new TypedThingSetTra=
ckingLogic<IHasWorld>(IHasWorld.class);
-		logicManager.addThingLogic(ttstlView);
-
 		logicManager.addThingLogic(new MoveWithLogic(rtl));
 		logicManager.addThingLogic(new MirrorAnchorPointLogic(rtl));
 		logicManager.addThingLogic(new MirrorBoundingBoxLogic(rtl));
 		logicManager.addThingLogic(new StandardCursorLogic());
 		logicManager.addThingLogic(new ToolTipLogic());
 =

-		ModelBoundsTrackingLogic mbtl =3D new ModelBoundsTrackingLogic();
+		ModelBoundsTrackingLogic mbtl =3D new ModelBoundsTrackingLogic(tttl);
 		logicManager.addThingLogic(mbtl);
 =

-		logicManager.addThingLogic(new WorldThingExternalEventsLogic(ttstlView));
+		logicManager.addThingLogic(new WorldThingExternalEventsLogic(tttl));
 =

 		if(addEditingBehaviors){
 			logicManager.addThingLogic(new EditVariantsLogic(AS, xArchRef));




More information about the archstudio-commits mailing list