Index: src/org/netbeans/modules/looks/FirerSupport.java =================================================================== RCS file: /cvs/openidex/looks/src/org/netbeans/modules/looks/Attic/FirerSupport.java,v --- src/org/netbeans/modules/looks/FirerSupport.java 5 Nov 2002 17:16:45 -0000 1.1.2.5 +++ src/org/netbeans/modules/looks/FirerSupport.java 5 Nov 2002 18:27:14 -0000 @@ -15,7 +15,9 @@ import java.lang.ref.Reference; import java.lang.ref.ReferenceQueue; +import java.util.ArrayList; import java.util.Enumeration; +import java.util.List; import org.netbeans.api.looks.*; @@ -99,34 +101,58 @@ * @throws IllegalStateException If a selector returns invalid object */ static public final Look searchLook (LookSelector selector, Object repObject) throws IllegalArgumentException, IllegalStateException { - if (repObject == null) - throw new IllegalArgumentException ("Selector connot be null."); // NOI18N - if (selector == null) { - throw new IllegalArgumentException ("Represented object cannot be null."); // NOI18N - } - Look look = searchFirstLook (selector, repObject); - if (look == null) { + List l = searchForLooks (selector, repObject); + Look look; + Object o = null; + + if (!l.isEmpty ()) + o = l.iterator ().next (); + + if (o instanceof Look) { + look = (Look) o; + } else { ErrorManager.getDefault ().log ("There is not any look accordant with object " + repObject+", BeanLook is used as default."); // NOI18N look = Looks.beanLook (); } + return look; } - static private final Look searchFirstLook (LookSelector selector, Object repObject) { + /** Returns a list of looks for the represented object in given selector. + *

+ * Search in the selector. All found looks add to list. If there is found a selector + * then searches deeply in this selector. + * There is not any look then returns the empty list. + * @param selector look selector + * @param repObject represented object + * @throws IllegalArgumentException If selector or repObject is null + * @throws IllegalStateException If a selector returns invalid object + * @return list of the looks for represented object in given selector + */ + static public final List searchForLooks (LookSelector selector, Object repObject) throws IllegalArgumentException, IllegalStateException { + ArrayList list = new ArrayList (); + if (repObject == null) + throw new IllegalArgumentException ("Selector connot be null."); // NOI18N + if (selector == null) { + throw new IllegalArgumentException ("Represented object cannot be null."); // NOI18N + } + searchAllLooks (selector, repObject, list); + return list; + } + + static private final void searchAllLooks (LookSelector selector, Object repObject, ArrayList list) { Enumeration descriptors = selector.getLookDescriptors (repObject); Object lookDescriptor = null; while (descriptors.hasMoreElements ()) { lookDescriptor = descriptors.nextElement (); if (lookDescriptor instanceof Look) - return (Look) lookDescriptor; + list.add (lookDescriptor); else if (lookDescriptor instanceof LookSelector) - return searchFirstLook ((LookSelector) lookDescriptor, repObject); + searchAllLooks ((LookSelector) lookDescriptor, repObject, list); else throw new IllegalStateException ("Unknown instance of LookDescriptor: " + lookDescriptor); //NOI18N } - // there is no look in this selector - return null; } } Index: src/org/netbeans/modules/looks/LookSwitcherLook.java =================================================================== RCS file: /cvs/openidex/looks/src/org/netbeans/modules/looks/Attic/LookSwitcherLook.java,v --- src/org/netbeans/modules/looks/LookSwitcherLook.java 5 Nov 2002 10:22:51 -0000 1.1.2.11 +++ src/org/netbeans/modules/looks/LookSwitcherLook.java 5 Nov 2002 18:27:15 -0000 @@ -114,29 +114,6 @@ // Innerclasses for switching Looks ---------------------------------------- - /** Adds all Looks available for given LookNode to the list - */ -// static void collectLooks (LookNode ln, ArrayList list) { -// collectLooks (ln.getLookSelector(), ln.getRepresentedObject(), list); -// } - - private static void collectLooks (LookSelector ls, Object rep, ArrayList list) { - Enumeration e = ls.getLookDescriptors( rep ); - if (e == null) return; - - while (e.hasMoreElements()) { - Object o = e.nextElement(); - - if (o instanceof Look) { - list.add (o); - } else if (o instanceof LookSelector) { - collectLooks ((LookSelector) o, rep, list); - } else { - throw new IllegalStateException("Unknown instance of LookDescriptor: " + o); //NOI18N - } - } - } - /** The property for changing look */ static class LookProperty extends PropertySupport.ReadWrite { @@ -203,8 +180,7 @@ setValue( null ); } - ArrayList list = new ArrayList (); - collectLooks (lookNode.getLookSelector(), lookNode.getRepresentedObject(), list); + List list = FirerSupport.searchForLooks (lookNode.getLookSelector (), lookNode.getRepresentedObject ()); Iterator it = list.iterator (); while (it.hasNext ()) { @@ -230,8 +206,7 @@ * @return The tag values for this property. */ public String[] getTags () { - ArrayList list = new ArrayList (); - collectLooks (lookNode.getLookSelector(), lookNode.getRepresentedObject(), list); + List list = FirerSupport.searchForLooks (lookNode.getLookSelector (), lookNode.getRepresentedObject ()); String names[] = new String [list.size ()]; for ( int i = 0; i < names.length ; i++ ) { @@ -390,9 +365,7 @@ if (n == null) { return null; } else { - ArrayList arr = new ArrayList (); - collectLooks (n.getLookSelector(), n.getRepresentedObject(), arr); - return arr; + return FirerSupport.searchForLooks (n.getLookSelector (), n.getRepresentedObject ());; } } else { return null;