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: /*
043: * File : IIDEManager.java
044: * Version : 1.0
045: * Description : Interface to manage IDE housekeeping
046: * Author : Darshan
047: */
048: package org.netbeans.modules.uml.integration.ide;
049:
050: import java.awt.Frame;
051: import java.io.File;
052: import java.util.ArrayList;
053:
054: import org.netbeans.modules.uml.integration.ide.dialogs.IProgressIndicator;
055: import org.netbeans.modules.uml.core.metamodel.diagrams.IDiagram;
056: import org.netbeans.modules.uml.core.metamodel.structure.IProject;
057:
058: /**
059: * Interface that an IDE integration must implement so that Describe can ask
060: * the IDE to do various housekeeping tasks.
061: *
062: * @author Darshan
063: * @version 1.0
064: */
065: public interface IIDEManager {
066: public boolean isPropertyEditorVisible();
067:
068: public void setPropertyEditorVisible(boolean vis);
069:
070: public void saveCurrentProject();
071:
072: public boolean isProjectDirty();
073:
074: public void setProjectDirty(boolean dirty);
075:
076: public String getProjectToInsert();
077:
078: /**
079: * Return the top-level Frame of the IDE. If the IDE is not AWT-based,
080: * null is an acceptable return value. This is used by
081: * getProgressIndicator() to make the progress indicator modal to the IDE's
082: * top-level window.
083: *
084: * @return The top-level <code>Frame</code> or <code>null</code> if there
085: * is no appropriate <code>Frame</code>.
086: */
087: public Frame getTopFrame();
088:
089: /**
090: * Constructs and returns an IProgressIndicator instance, modal to the
091: * IDE's top-level Frame.
092: *
093: * @return An <code>IProgressIndicator</code> appropriate to the IDE
094: * concerned.
095: */
096: public IProgressIndicator getProgressIndicator();
097:
098: /**
099: * Returns the diagram kind of the given diagram.
100: * @param diagram An IDiagram, which may be null.
101: * @return The diagram kind, one of the constants in DiagramKind.
102: */
103: public int getDiagramKind(IDiagram diagram);
104:
105: /**
106: * Synchronizes open editors on the given files with the file system.
107: */
108: public void synchronizeFiles(ArrayList files);
109:
110: /**
111: * Revive all cached Describe objects.
112: */
113: public void reviveDescribeObjects();
114:
115: public void invokeLater(Runnable r);
116:
117: /**
118: * Invitation to the IDE integration to rename the project named 'oldName'
119: * to 'newName'.
120: *
121: * @param oldName The old name of the Describe project.
122: * @param newName The new name of the Describe project.
123: */
124: public void renameProject(String oldName, String newName);
125:
126: /**
127: * Opens the IDE project specified by 'project' associated with the given
128: * Describe project.
129: * @param describeProject The Describe IProject associated with the IDE
130: * project to be opened.
131: * @param project A String that uniquely identifies the IDE project
132: * to be opened.
133: */
134: public void openProject(IProject describeProject, String project);
135:
136: /**
137: * Closes the given Describe project and the associated IDE project, if any.
138: * While it's strongly recommended that the given Describe project be
139: * closed, nothing evil will happen (apart from confusing the user) if this
140: * isn't done. It's left to the IDE to discover what IDE project is
141: * associated with the given Describe project, if any.
142: *
143: * @param proj The Describe project to close.
144: */
145: public void closeProject(IProject proj);
146:
147: /**
148: * Handles the removal of a Describe project. When this happens we need to locate
149: * the associated IDE project and make it 'virginal' again.
150: *
151: * @param proj The Describe project that is going to be removed.
152: */
153: public void handleRemoveDescribeProject(IProject proj);
154:
155: /**
156: * Activates the IDE project associated with the given Describe project.
157: * Note that we assume here that the IDE can work out what the associated
158: * IDE project is, unlike openProject().
159: *
160: * @param describeProject The Describe project that is the subject of
161: * roundtrip activity.
162: * @return <code>false</code> to veto the roundtrip change notification.
163: */
164: public boolean activateIDEProject(IProject describeProject);
165:
166: /**
167: * Returns the directory that will contain the default workspace - usually
168: * the parent directory under which directories will be created for each
169: * IDE project.
170: *
171: * @return The absolute path of the default workspace directory.
172: */
173: public String getDefaultWorkspaceDirectory();
174:
175: /**
176: * Deletes the given file from the filesystem, also closing any open IDE
177: * editors that are editing the file, <em>without affecting any model
178: * elements defined in the file</code>.
179: *
180: * @param file The File to delete, guaranteed to be non-null and to exist.
181: */
182: public void deleteFile(File file);
183:
184: /**
185: * Confirms the delete of a given file from the filesystem.
186: *
187: * @param file The File to delete, guaranteed to be non-null and to exist.
188: */
189: public void confirmDeleteSourceFile(File file);
190:
191: /**
192: * Returns the type of IDE.
193: *
194: */
195: public int getIDEType();
196: }
|