123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245 |
- /* *******************************************************************
- * Copyright (c) 1999-2001 Xerox Corporation,
- * 2002 Palo Alto Research Center, Incorporated (PARC).
- * All rights reserved.
- * This program and the accompanying materials are made available
- * under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Xerox/PARC initial implementation
- * Helen Hawkins Converted to new interface (bug 148190)
- * ******************************************************************/
- package org.aspectj.tools.ajbrowser;
-
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.List;
-
- import javax.swing.JFrame;
-
- import org.aspectj.ajde.Ajde;
- import org.aspectj.ajde.IconRegistry;
- import org.aspectj.ajde.internal.BuildConfigManager;
- import org.aspectj.ajde.ui.FileStructureView;
- import org.aspectj.ajde.ui.InvalidResourceException;
- import org.aspectj.ajde.ui.UserPreferencesAdapter;
- import org.aspectj.ajde.ui.internal.UserPreferencesStore;
- import org.aspectj.ajde.ui.javaoptions.JavaBuildOptions;
- import org.aspectj.ajde.ui.javaoptions.JavaCompilerWarningsOptionsPanel;
- import org.aspectj.ajde.ui.javaoptions.JavaComplianceOptionsPanel;
- import org.aspectj.ajde.ui.javaoptions.JavaDebugOptionsPanel;
- import org.aspectj.ajde.ui.javaoptions.JavaOtherOptionsPanel;
- import org.aspectj.ajde.ui.swing.MultiStructureViewPanel;
- import org.aspectj.asm.AsmManager;
- import org.aspectj.asm.IHierarchy;
- import org.aspectj.asm.IHierarchyListener;
- import org.aspectj.tools.ajbrowser.core.BrowserBuildProgressMonitor;
- import org.aspectj.tools.ajbrowser.core.BrowserCompilerConfiguration;
- import org.aspectj.tools.ajbrowser.core.BrowserErrorHandler;
- import org.aspectj.tools.ajbrowser.ui.BasicEditor;
- import org.aspectj.tools.ajbrowser.ui.BrowserMessageHandler;
- import org.aspectj.tools.ajbrowser.ui.BrowserRuntimeProperties;
- import org.aspectj.tools.ajbrowser.ui.BrowserUIAdapter;
- import org.aspectj.tools.ajbrowser.ui.EditorManager;
- import org.aspectj.tools.ajbrowser.ui.swing.BrowserOptionsPanel;
- import org.aspectj.tools.ajbrowser.ui.swing.MessageHandlerPanel;
- import org.aspectj.tools.ajbrowser.ui.swing.TopFrame;
- import org.aspectj.util.FileUtil;
-
- /**
- * IDE manager for standalone AJDE application.
- *
- * @author Mik Kersten
- */
- public class BrowserManager {
-
- public static final String TITLE = "AspectJ Browser";
-
- private static final BrowserManager INSTANCE = new BrowserManager();
- private EditorManager editorManager;
- private UserPreferencesAdapter preferencesAdapter;
- private static TopFrame topFrame = null;
-
- private List configFiles = new ArrayList();
- private JavaBuildOptions javaBuildOptions;
-
- public static BrowserManager getDefault() {
- return INSTANCE;
- }
-
- public final IHierarchyListener VIEW_LISTENER = new IHierarchyListener() {
- public void elementsUpdated(IHierarchy model) {
- FileStructureView fsv = Ajde.getDefault().getStructureViewManager().getDefaultFileView();
- if (fsv != null) {
- fsv.setSourceFile(BrowserManager.getDefault().getEditorManager().getCurrFile());
- }
- }
- };
-
- public void init(String[] configFilesArgs, boolean visible) {
- try {
- javaBuildOptions = new JavaBuildOptions();
- preferencesAdapter = new UserPreferencesStore(true);
- topFrame = new TopFrame();
-
- BasicEditor ajdeEditor = new BasicEditor();
- editorManager = new EditorManager(ajdeEditor);
-
- BrowserMessageHandler messageHandler = new BrowserMessageHandler();
-
- Ajde.getDefault().init(
- new BrowserCompilerConfiguration(preferencesAdapter),
- messageHandler,
- new BrowserBuildProgressMonitor(messageHandler),
- ajdeEditor,
- new BrowserUIAdapter(),
- new IconRegistry(),
- topFrame,
- new BrowserRuntimeProperties(preferencesAdapter),
- true);
-
- setUpTopFrame(visible);
- addOptionsPanels();
-
- setUpConfigFiles(configFilesArgs);
-
- AsmManager.getDefault().addListener(VIEW_LISTENER);
-
- } catch (Throwable t) {
- t.printStackTrace();
- BrowserErrorHandler.handleError("AJDE failed to initialize.", t);
- }
- }
-
- /**
- * Find and create the set of build configuration files
- * @param configFilesArgs
- */
- private void setUpConfigFiles(String[] configFilesArgs) {
- configFiles = getConfigFilesList(configFilesArgs);
- if (configFiles.size() == 0) {
- BrowserErrorHandler
- .handleWarning("No build configuration selected. "
- + "Select a \".lst\" build configuration file in order to compile and navigate structure.");
- } else {
- Ajde.getDefault().getBuildConfigManager().setActiveConfigFile(
- (String)configFiles.get(0));
- }
- }
-
- /**
- * Create the top frame of the browser
- */
- private void setUpTopFrame(boolean visible) {
- MultiStructureViewPanel multiViewPanel = new MultiStructureViewPanel(
- Ajde.getDefault().getViewManager()
- .getBrowserPanel(), Ajde.getDefault()
- .getFileStructurePanel());
-
- topFrame.init(multiViewPanel, new MessageHandlerPanel(),
- editorManager.getEditorPanel());
-
- if (visible)
- topFrame.setVisible(true);
- }
-
- public void resetEditorFrame() {
- topFrame.resetSourceEditorPanel();
- }
-
- public void resetEditor() {
- BrowserManager.getDefault().getRootFrame().setSize(BrowserManager.getDefault().getRootFrame().getWidth()+1, BrowserManager.getDefault().getRootFrame().getHeight()+1);
- BrowserManager.getDefault().getRootFrame().doLayout();
- BrowserManager.getDefault().getRootFrame().repaint();
- }
-
- public void setStatusInformation(String text) {
- topFrame.statusText_label.setText(text);
- }
-
- public void setEditorStatusText(String text) {
- topFrame.setTitle(BrowserManager.TITLE + " - " + text);
- }
-
- public void saveAll() {
- editorManager.saveContents();
- }
-
- public JFrame getRootFrame() {
- return topFrame;
- }
-
- public void openFile(String filePath) {
- try {
- if (filePath.endsWith(".lst")) {
- Ajde.getDefault().getBuildConfigEditor().openFile(filePath);
- topFrame.setEditorPanel(Ajde.getDefault().getBuildConfigEditor());
- } else if (FileUtil.hasSourceSuffix(filePath)){
- editorManager.showSourceLine(filePath, 0, false);
- } else {
- BrowserErrorHandler
- .handleError("File: "
- + filePath
- + " could not be opened because the extension was not recoginzed.");
- }
- } catch (IOException ioe) {
- BrowserErrorHandler.handleError("Could not open file: "
- + filePath, ioe);
- } catch (InvalidResourceException ire) {
- BrowserErrorHandler.handleError("Invalid file: " + filePath, ire);
- }
- }
-
- private List getConfigFilesList(String[] configFiles) {
- List configs = new ArrayList();
- for (int i = 0; i < configFiles.length; i++) {
- if (configFiles[i].endsWith(BuildConfigManager.CONFIG_FILE_SUFFIX)) {
- configs.add(configFiles[i]);
- }
- }
- return configs;
- }
-
- /**
- * Add the different options panels to the main options frame
- * (adds panels for java compliance, compiler warnings, debug
- * warnings, other java options and options specific to
- * ajbrowser)
- */
- private void addOptionsPanels() {
- Ajde.getDefault().getOptionsFrame().addOptionsPanel(
- new JavaComplianceOptionsPanel(javaBuildOptions));
- Ajde.getDefault().getOptionsFrame().addOptionsPanel(
- new JavaCompilerWarningsOptionsPanel(javaBuildOptions));
- Ajde.getDefault().getOptionsFrame().addOptionsPanel(
- new JavaOtherOptionsPanel(javaBuildOptions));
- Ajde.getDefault().getOptionsFrame().addOptionsPanel(
- new JavaDebugOptionsPanel(javaBuildOptions));
- Ajde.getDefault().getOptionsFrame().addOptionsPanel(
- new BrowserOptionsPanel());
- }
-
- /**
- * @return the EditorManager
- */
- public EditorManager getEditorManager() {
- return editorManager;
- }
-
- /**
- * @return the UserPreferencesAdapter
- */
- public UserPreferencesAdapter getPreferencesAdapter() {
- return preferencesAdapter;
- }
-
- /**
- * @return the JavaBuildOptions instance being used
- */
- public JavaBuildOptions getJavaBuildOptions() {
- return javaBuildOptions;
- }
-
- }
|