KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > spi > palette > PaletteTopComponent


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19
20
21 package org.netbeans.spi.palette;
22
23 import java.awt.BorderLayout JavaDoc;
24 import java.awt.Dimension JavaDoc;
25 import java.beans.PropertyChangeEvent JavaDoc;
26 import java.beans.PropertyChangeListener JavaDoc;
27 import org.netbeans.modules.palette.Utils;
28 import org.netbeans.modules.palette.ui.PalettePanel;
29 import org.openide.util.HelpCtx;
30 import org.openide.util.RequestProcessor;
31 import org.openide.util.Utilities;
32 import org.openide.windows.TopComponent;
33
34
35
36
37 /**
38  * <p>Top component which displays component palette.</p>
39  *
40  *
41  * @author S. Aubrecht
42  */

43
44 final class PaletteTopComponent extends TopComponent implements PropertyChangeListener JavaDoc {
45
46     static final long serialVersionUID = 4248268998485315735L;
47
48     private static PaletteTopComponent instance;
49     /** holds currently scheduled/running task for set of activated node */
50     private RequestProcessor.Task nodeSetterTask;
51     private final Object JavaDoc NODE_SETTER_LOCK = new Object JavaDoc();
52     
53     private TopComponent paletteSource;
54     
55     /** Creates new PaletteTopComponent */
56     private PaletteTopComponent() {
57         setName(Utils.getBundleString("CTL_Component_palette")); // NOI18N
58
setToolTipText(Utils.getBundleString("HINT_PaletteComponent"));
59         setIcon(Utilities.loadImage("org/netbeans/modules/palette/resources/palette.png")); // NOI18N
60

61         setLayout(new BorderLayout JavaDoc());
62         setPreferredSize(new Dimension JavaDoc(505, 88));
63         add( PalettePanel.getDefault().getScrollPane(), BorderLayout.CENTER );
64         
65         putClientProperty( "keepPreferredSizeWhenSlideIn", Boolean.TRUE ); // NOI18N
66
}
67     
68     public void requestActive() {
69         super.requestActive();
70         PalettePanel.getDefault().requestFocusInWindow();
71     }
72
73     /** Gets default instance. Don't use directly, it reserved for '.settings' file only,
74      * i.e. deserialization routines, otherwise you can get non-deserialized instance. */

75     public static synchronized PaletteTopComponent getDefault() {
76         if(instance == null) {
77             instance = new PaletteTopComponent();
78         }
79         return instance;
80     }
81     
82     /** Overriden to explicitely set persistence type of PaletteTopComponent
83      * to PERSISTENCE_ALWAYS */

84     public int getPersistenceType() {
85         return TopComponent.PERSISTENCE_ALWAYS;
86     }
87     
88     public void componentOpened() {
89         PaletteSwitch switcher = PaletteSwitch.getDefault();
90         
91         switcher.addPropertyChangeListener( this );
92         setPaletteController( switcher.getCurrentPalette() );
93     }
94     
95     public void componentClosed() {
96         // palette is closed so reset its contents
97
setPaletteController( null );
98         
99         PaletteSwitch.getDefault().removePropertyChangeListener( this );
100     }
101
102     /** replaces this in object stream */
103     public Object JavaDoc writeReplace() {
104         return new ResolvableHelper();
105     }
106     
107     protected String JavaDoc preferredID() {
108         return getClass().getName();
109     }
110     
111     public void propertyChange (PropertyChangeEvent JavaDoc e) {
112         if( PaletteSwitch.PROP_PALETTE_CONTENTS.equals( e.getPropertyName() ) ) {
113             PaletteController pc = (PaletteController)e.getNewValue();
114             
115             setPaletteController( pc );
116         }
117     }
118     
119     private void setPaletteController( PaletteController pc ) {
120         if( null != pc ) {
121             PalettePanel.getDefault().setContent( pc, pc.getModel(), pc.getSettings() );
122         } else {
123             PalettePanel.getDefault().setContent( null, null, null );
124         }
125     }
126
127     public HelpCtx getHelpCtx() {
128         return PalettePanel.getDefault().getHelpCtx();
129     }
130     
131     final static class ResolvableHelper implements java.io.Serializable JavaDoc {
132         static final long serialVersionUID = 7424646018839457788L;
133         public Object JavaDoc readResolve() {
134             return PaletteTopComponent.getDefault();
135         }
136     }
137 }
138
Popular Tags