This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

View | Details | Raw Unified | Return to bug 28491
Collapse All | Expand All

(-)src/org/netbeans/modules/looks/FirerSupport.java (-12 / +38 lines)
Lines 15-21 Link Here
15
15
16
import java.lang.ref.Reference;
16
import java.lang.ref.Reference;
17
import java.lang.ref.ReferenceQueue;
17
import java.lang.ref.ReferenceQueue;
18
import java.util.ArrayList;
18
import java.util.Enumeration;
19
import java.util.Enumeration;
20
import java.util.List;
19
21
20
import org.netbeans.api.looks.*;
22
import org.netbeans.api.looks.*;
21
23
Lines 99-132 Link Here
99
     * @throws IllegalStateException If a selector returns invalid object
101
     * @throws IllegalStateException If a selector returns invalid object
100
     */
102
     */
101
    static public final Look searchLook (LookSelector selector, Object repObject) throws IllegalArgumentException, IllegalStateException {
103
    static public final Look searchLook (LookSelector selector, Object repObject) throws IllegalArgumentException, IllegalStateException {
102
        if (repObject == null)
104
        List l = searchForLooks (selector, repObject);
103
            throw new IllegalArgumentException ("Selector connot be null."); // NOI18N
105
        Look look;
104
        if (selector == null) {
106
        Object o = null;
105
            throw new IllegalArgumentException ("Represented object cannot be null."); // NOI18N
107
        
106
        }
108
        if (!l.isEmpty ())
107
        Look look = searchFirstLook (selector, repObject);
109
            o  = l.iterator ().next ();
108
        if (look == null) {
110
        
111
        if (o  instanceof Look) {
112
            look = (Look) o;
113
        } else {
109
            ErrorManager.getDefault ().log ("There is not any look accordant with object " +
114
            ErrorManager.getDefault ().log ("There is not any look accordant with object " +
110
                                            repObject+", BeanLook is used as default."); // NOI18N
115
                                            repObject+", BeanLook is used as default."); // NOI18N
111
            look = Looks.beanLook ();
116
            look = Looks.beanLook ();
112
        }
117
        }
118
        
113
        return look;
119
        return look;
114
    }
120
    }
115
    
121
    
116
    static private final Look searchFirstLook (LookSelector selector, Object repObject) {
122
    /** Returns a list of looks for the represented object in given selector.
123
     * <P>
124
     * Search in the selector. All found looks add to list. If there is found a selector
125
     * then searches deeply in this selector.
126
     * There is not any look then returns the empty list.
127
     * @param selector look selector
128
     * @param repObject represented object
129
     * @throws IllegalArgumentException If selector or repObject is null
130
     * @throws IllegalStateException If a selector returns invalid object
131
     * @return list of the looks for represented object in given selector
132
     */    
133
    static public final List searchForLooks (LookSelector selector, Object repObject) throws IllegalArgumentException, IllegalStateException {
134
        ArrayList list = new ArrayList ();
135
        if (repObject == null)
136
            throw new IllegalArgumentException ("Selector connot be null."); // NOI18N
137
        if (selector == null) {
138
            throw new IllegalArgumentException ("Represented object cannot be null."); // NOI18N
139
        }
140
        searchAllLooks (selector, repObject, list);
141
        return list;
142
    }
143
    
144
    static private final void searchAllLooks (LookSelector selector, Object repObject, ArrayList list) {
117
        Enumeration descriptors = selector.getLookDescriptors (repObject);
145
        Enumeration descriptors = selector.getLookDescriptors (repObject);
118
        Object lookDescriptor = null;
146
        Object lookDescriptor = null;
119
        while (descriptors.hasMoreElements ()) {
147
        while (descriptors.hasMoreElements ()) {
120
            lookDescriptor = descriptors.nextElement ();
148
            lookDescriptor = descriptors.nextElement ();
121
            if (lookDescriptor instanceof Look)
149
            if (lookDescriptor instanceof Look)
122
                return (Look) lookDescriptor;
150
                list.add (lookDescriptor);
123
            else if (lookDescriptor instanceof LookSelector)
151
            else if (lookDescriptor instanceof LookSelector)
124
                return searchFirstLook ((LookSelector) lookDescriptor, repObject);
152
                searchAllLooks ((LookSelector) lookDescriptor, repObject, list);
125
            else
153
            else
126
                throw new IllegalStateException ("Unknown instance of LookDescriptor: " + lookDescriptor); //NOI18N
154
                throw new IllegalStateException ("Unknown instance of LookDescriptor: " + lookDescriptor); //NOI18N
127
        }
155
        }
128
        // there is no look in this selector
129
        return null;
130
    }
156
    }
131
    
157
    
132
}
158
}
(-)src/org/netbeans/modules/looks/LookSwitcherLook.java (-30 / +3 lines)
Lines 114-142 Link Here
114
    
114
    
115
    // Innerclasses for switching Looks ----------------------------------------
115
    // Innerclasses for switching Looks ----------------------------------------
116
116
117
    /** Adds all Looks available for given LookNode to the list
118
     */
119
//    static void collectLooks (LookNode ln, ArrayList list) {
120
//        collectLooks (ln.getLookSelector(), ln.getRepresentedObject(), list);
121
//    }        
122
    
123
    private static void collectLooks (LookSelector ls, Object rep, ArrayList list) {
124
        Enumeration e = ls.getLookDescriptors( rep );
125
        if (e == null) return;
126
127
        while (e.hasMoreElements()) {
128
            Object o = e.nextElement();
129
            
130
            if (o instanceof Look) {
131
                list.add (o);
132
            } else if (o instanceof LookSelector) {
133
                collectLooks ((LookSelector) o, rep, list);
134
            } else {
135
                throw new IllegalStateException("Unknown instance of LookDescriptor: " + o); //NOI18N
136
            }
137
        }            
138
    }
139
    
140
    /** The property for changing look
117
    /** The property for changing look
141
     */
118
     */
142
    static class LookProperty extends PropertySupport.ReadWrite {
119
    static class LookProperty extends PropertySupport.ReadWrite {
Lines 203-210 Link Here
203
                setValue( null );
180
                setValue( null );
204
            }
181
            }
205
            
182
            
206
            ArrayList list = new ArrayList ();
183
            List list = FirerSupport.searchForLooks (lookNode.getLookSelector (), lookNode.getRepresentedObject ());
207
            collectLooks (lookNode.getLookSelector(), lookNode.getRepresentedObject(), list);
208
            Iterator it = list.iterator ();
184
            Iterator it = list.iterator ();
209
            
185
            
210
            while (it.hasNext ()) {
186
            while (it.hasNext ()) {
Lines 230-237 Link Here
230
        * @return The tag values for this property.
206
        * @return The tag values for this property.
231
        */
207
        */
232
        public String[] getTags () {
208
        public String[] getTags () {
233
            ArrayList list = new ArrayList ();
209
            List list = FirerSupport.searchForLooks (lookNode.getLookSelector (), lookNode.getRepresentedObject ());
234
            collectLooks (lookNode.getLookSelector(), lookNode.getRepresentedObject(), list);
235
            
210
            
236
            String names[] = new String [list.size ()];
211
            String names[] = new String [list.size ()];
237
            for ( int i = 0; i < names.length ; i++ ) {
212
            for ( int i = 0; i < names.length ; i++ ) {
Lines 390-398 Link Here
390
                if (n == null) {
365
                if (n == null) {
391
                    return null;
366
                    return null;
392
                } else {
367
                } else {
393
                    ArrayList arr = new ArrayList ();
368
                    return FirerSupport.searchForLooks (n.getLookSelector (), n.getRepresentedObject ());;
394
                    collectLooks (n.getLookSelector(), n.getRepresentedObject(), arr);
395
                    return arr;
396
                }
369
                }
397
            } else {
370
            } else {
398
                return null;
371
                return null;

Return to bug 28491