001: /*
002: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003: *
004: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * The contents of this file are subject to the terms of either the GNU
007: * General Public License Version 2 only ("GPL") or the Common
008: * Development and Distribution License("CDDL") (collectively, the
009: * "License"). You may not use this file except in compliance with the
010: * License. You can obtain a copy of the License at
011: * http://www.netbeans.org/cddl-gplv2.html
012: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
013: * specific language governing permissions and limitations under the
014: * License. When distributing the software, include this License Header
015: * Notice in each file and include the License file at
016: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
017: * particular file as subject to the "Classpath" exception as provided
018: * by Sun in the GPL Version 2 section of the License file that
019: * accompanied this code. If applicable, add the following below the
020: * License Header, with the fields enclosed by brackets [] replaced by
021: * your own identifying information:
022: * "Portions Copyrighted [year] [name of copyright owner]"
023: *
024: * Contributor(s):
025: *
026: * The Original Software is NetBeans. The Initial Developer of the Original
027: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
028: * Microsystems, Inc. All Rights Reserved.
029: *
030: * If you wish your version of this file to be governed by only the CDDL
031: * or only the GPL Version 2, indicate your decision by adding
032: * "[Contributor] elects to include this software in this distribution
033: * under the [CDDL or GPL Version 2] license." If you do not indicate a
034: * single choice of license, a recipient has the option to distribute
035: * your version of this file under either the CDDL, the GPL Version 2 or
036: * to extend the choice of license to its licensees as provided above.
037: * However, if you add GPL Version 2 code and therefore, elected the GPL
038: * Version 2 license, then the option applies only if the new code is
039: * made subject to such option by the copyright holder.
040: */
041:
042: package org.netbeans.modules.xml.schema.abe;
043:
044: import java.beans.PropertyChangeListener;
045: import java.beans.PropertyChangeSupport;
046: import java.util.Iterator;
047: import javax.swing.JScrollPane;
048: import org.netbeans.modules.xml.axi.AXIModel;
049: import org.netbeans.modules.xml.schema.model.SchemaModel;
050: import org.netbeans.spi.palette.PaletteController;
051: import org.openide.loaders.DataObject;
052: import org.openide.util.Lookup;
053: import org.openide.windows.TopComponent;
054:
055: /**
056: *
057: * @author Todd
058: */
059: public class InstanceUIContext {
060: ////////////////////////////////////////////////////////////////////////////
061: // Instance members
062: ////////////////////////////////////////////////////////////////////////////
063:
064: protected InstanceDesignerPanel instanceDesignerPanel;
065: protected PaletteController paletteController;
066: private boolean userInducedEventMode;
067: private JScrollPane instanceDesignerScrollPane;
068: private TopComponent topComponent;
069: private DataObject schemaDataObject;
070: private ComponentSelectionManager componentSelectionManager;
071: private MultiComponentActionManager mcaManager;
072: private boolean shutdown = false;
073:
074: protected InstanceUIContext() {
075: componentSelectionManager = new ComponentSelectionManager(this );
076: mcaManager = new MultiComponentActionManager(this );
077: }
078:
079: public InstanceDesignerPanel getInstanceDesignerPanel() {
080: return instanceDesignerPanel;
081: }
082:
083: public SchemaModel getSchemaModel() {
084: return getInstanceDesignerPanel().getSchemaModel();
085: }
086:
087: public ComponentSelectionManager getComponentSelectionManager() {
088: return componentSelectionManager;
089: }
090:
091: public MultiComponentActionManager getMultiComponentActionManager() {
092: return mcaManager;
093: }
094:
095: public boolean isUserInducedEventMode() {
096: return this .userInducedEventMode;
097: }
098:
099: public void setUserInducedEventMode(boolean userInducedEventMode) {
100: this .userInducedEventMode = userInducedEventMode;
101: if (!userInducedEventMode)
102: this .userActedComponent = null;
103: }
104:
105: ABEBaseDropPanel userActedComponent;
106:
107: public void setUserInducedEventMode(boolean eventMode,
108: ABEBaseDropPanel userActedComponent) {
109: setUserInducedEventMode(eventMode);
110: this .userActedComponent = userActedComponent;
111: }
112:
113: public ABEBaseDropPanel getUserActedComponent() {
114: return userActedComponent;
115: }
116:
117: public void resetUserActedComponent() {
118: this .userActedComponent = null;
119: }
120:
121: public JScrollPane getInstanceDesignerScrollPane() {
122: return instanceDesignerScrollPane;
123: }
124:
125: public void setInstanceDesignerScrollPane(
126: JScrollPane instanceDesignerScrollPane) {
127: this .instanceDesignerScrollPane = instanceDesignerScrollPane;
128: }
129:
130: public TopComponent getTopComponent() {
131: return topComponent;
132: }
133:
134: public Lookup getLookup() {
135: return getSchemaDataObject().getNodeDelegate().getLookup();
136: }
137:
138: public DataObject getSchemaDataObject() {
139: return schemaDataObject;
140: }
141:
142: void showPopupMenu() {
143: throw new UnsupportedOperationException("Not yet implemented");
144: }
145:
146: public AXIModel getAXIModel() {
147: return instanceDesignerPanel.getAXIModel();
148: }
149:
150: public NamespacePanel getNamespacePanel() {
151: return getInstanceDesignerPanel().getNamespacePanel();
152: }
153:
154: private FocusTraversalManager focusTraversalManager;
155:
156: public void setFocusTraversalManager(
157: FocusTraversalManager focusTraversalManager) {
158: this .focusTraversalManager = focusTraversalManager;
159: }
160:
161: public FocusTraversalManager getFocusTraversalManager() {
162: return this .focusTraversalManager;
163: }
164:
165: PropertyChangeSupport pcs;
166:
167: public void addPropertyChangeListener(PropertyChangeListener pcl) {
168: if (pcs == null)
169: pcs = new PropertyChangeSupport(this );
170: pcs.addPropertyChangeListener(pcl);
171: }
172:
173: public void removePropertyChangeListener(PropertyChangeListener pcl) {
174: if (pcs == null)
175: return;
176: pcs.removePropertyChangeListener(pcl);
177: }
178:
179: public void shutdown() {
180: this .shutdown = true;
181: pcs.firePropertyChange(InstanceDesignConstants.PROP_SHUTDOWN,
182: null, true);
183: this .componentSelectionManager = null;
184: this .mcaManager = null;
185: this .pcs = null;
186: this .userActedComponent = null;
187: this .focusTraversalManager = null;
188: }
189:
190: public boolean isShutdown() {
191: return shutdown;
192: }
193:
194: void initialize(TopComponent tc, DataObject schemaDataObject,
195: InstanceDesignerPanel instanceDesignerPanel,
196: PaletteController paletteController) {
197: this.topComponent = tc;
198: this.schemaDataObject = schemaDataObject;
199: this.paletteController = paletteController;
200: this.instanceDesignerPanel = instanceDesignerPanel;
201: }
202: }
|