Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

BrowserManager.java 7.7KB

21 лет назад
18 лет назад
21 лет назад
18 лет назад
21 лет назад
17 лет назад
21 лет назад
17 лет назад
21 лет назад
17 лет назад
21 лет назад
17 лет назад
21 лет назад
17 лет назад
21 лет назад
17 лет назад
21 лет назад
17 лет назад
15 лет назад
17 лет назад
12 лет назад
17 лет назад
15 лет назад
21 лет назад
15 лет назад
15 лет назад
17 лет назад
21 лет назад
17 лет назад
21 лет назад
15 лет назад
17 лет назад
15 лет назад
17 лет назад
17 лет назад
21 лет назад
17 лет назад
21 лет назад
17 лет назад
15 лет назад
17 лет назад
15 лет назад
17 лет назад
15 лет назад
17 лет назад
15 лет назад
17 лет назад
15 лет назад
17 лет назад
15 лет назад
21 лет назад
12 лет назад
15 лет назад
21 лет назад
15 лет назад
21 лет назад
15 лет назад
21 лет назад
15 лет назад
21 лет назад
17 лет назад
21 лет назад
17 лет назад
15 лет назад
21 лет назад
15 лет назад
21 лет назад
15 лет назад
21 лет назад
17 лет назад
21 лет назад
12 лет назад
15 лет назад
21 лет назад
15 лет назад
17 лет назад
15 лет назад
17 лет назад
15 лет назад
21 лет назад
17 лет назад
15 лет назад
17 лет назад
15 лет назад
17 лет назад
21 лет назад
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. /* *******************************************************************
  2. * Copyright (c) 1999-2001 Xerox Corporation,
  3. * 2002 Palo Alto Research Center, Incorporated (PARC).
  4. * All rights reserved.
  5. * This program and the accompanying materials are made available
  6. * under the terms of the Eclipse Public License v1.0
  7. * which accompanies this distribution and is available at
  8. * http://www.eclipse.org/legal/epl-v10.html
  9. *
  10. * Contributors:
  11. * Xerox/PARC initial implementation
  12. * Helen Hawkins Converted to new interface (bug 148190)
  13. * ******************************************************************/
  14. package org.aspectj.tools.ajbrowser;
  15. import java.io.IOException;
  16. import java.util.ArrayList;
  17. import java.util.List;
  18. import javax.swing.JFrame;
  19. import org.aspectj.ajde.Ajde;
  20. import org.aspectj.ajde.IconRegistry;
  21. import org.aspectj.ajde.internal.BuildConfigManager;
  22. import org.aspectj.ajde.ui.FileStructureView;
  23. import org.aspectj.ajde.ui.InvalidResourceException;
  24. import org.aspectj.ajde.ui.UserPreferencesAdapter;
  25. import org.aspectj.ajde.ui.internal.UserPreferencesStore;
  26. import org.aspectj.ajde.ui.javaoptions.JavaBuildOptions;
  27. import org.aspectj.ajde.ui.javaoptions.JavaCompilerWarningsOptionsPanel;
  28. import org.aspectj.ajde.ui.javaoptions.JavaComplianceOptionsPanel;
  29. import org.aspectj.ajde.ui.javaoptions.JavaDebugOptionsPanel;
  30. import org.aspectj.ajde.ui.javaoptions.JavaOtherOptionsPanel;
  31. import org.aspectj.ajde.ui.swing.MultiStructureViewPanel;
  32. import org.aspectj.asm.IHierarchy;
  33. import org.aspectj.asm.IHierarchyListener;
  34. import org.aspectj.tools.ajbrowser.core.BrowserBuildProgressMonitor;
  35. import org.aspectj.tools.ajbrowser.core.BrowserCompilerConfiguration;
  36. import org.aspectj.tools.ajbrowser.core.BrowserErrorHandler;
  37. import org.aspectj.tools.ajbrowser.ui.BasicEditor;
  38. import org.aspectj.tools.ajbrowser.ui.BrowserMessageHandler;
  39. import org.aspectj.tools.ajbrowser.ui.BrowserRuntimeProperties;
  40. import org.aspectj.tools.ajbrowser.ui.BrowserUIAdapter;
  41. import org.aspectj.tools.ajbrowser.ui.EditorManager;
  42. import org.aspectj.tools.ajbrowser.ui.swing.BrowserOptionsPanel;
  43. import org.aspectj.tools.ajbrowser.ui.swing.MessageHandlerPanel;
  44. import org.aspectj.tools.ajbrowser.ui.swing.TopFrame;
  45. import org.aspectj.util.FileUtil;
  46. /**
  47. * IDE manager for standalone AJDE application.
  48. *
  49. * @author Mik Kersten
  50. */
  51. public class BrowserManager {
  52. public static final String TITLE = "AspectJ Browser";
  53. private static final BrowserManager INSTANCE = new BrowserManager();
  54. private EditorManager editorManager;
  55. private UserPreferencesAdapter preferencesAdapter;
  56. private static TopFrame topFrame = null;
  57. private List<String> configFiles = new ArrayList<String>();
  58. private JavaBuildOptions javaBuildOptions;
  59. public static BrowserManager getDefault() {
  60. return INSTANCE;
  61. }
  62. public final IHierarchyListener VIEW_LISTENER = new IHierarchyListener() {
  63. public void elementsUpdated(IHierarchy model) {
  64. FileStructureView fsv = Ajde.getDefault().getStructureViewManager().getDefaultFileView();
  65. if (fsv != null) {
  66. fsv.setSourceFile(BrowserManager.getDefault().getEditorManager().getCurrFile());
  67. }
  68. }
  69. };
  70. public void init(String[] configFilesArgs, boolean visible) {
  71. try {
  72. javaBuildOptions = new JavaBuildOptions();
  73. preferencesAdapter = new UserPreferencesStore(true);
  74. topFrame = new TopFrame();
  75. BasicEditor ajdeEditor = new BasicEditor();
  76. editorManager = new EditorManager(ajdeEditor);
  77. BrowserMessageHandler messageHandler = new BrowserMessageHandler();
  78. Ajde.getDefault().init(new BrowserCompilerConfiguration(preferencesAdapter), messageHandler,
  79. new BrowserBuildProgressMonitor(messageHandler), ajdeEditor, new BrowserUIAdapter(), new IconRegistry(),
  80. topFrame, new BrowserRuntimeProperties(preferencesAdapter), true);
  81. setUpTopFrame(visible);
  82. addOptionsPanels();
  83. setUpConfigFiles(configFilesArgs);
  84. Ajde.getDefault().getModel().addListener(VIEW_LISTENER);
  85. } catch (Throwable t) {
  86. t.printStackTrace();
  87. BrowserErrorHandler.handleError("AJDE failed to initialize.", t);
  88. }
  89. }
  90. /**
  91. * Find and create the set of build configuration files
  92. *
  93. * @param configFilesArgs
  94. */
  95. private void setUpConfigFiles(String[] configFilesArgs) {
  96. configFiles = getConfigFilesList(configFilesArgs);
  97. if (configFiles.size() == 0) {
  98. BrowserErrorHandler.handleWarning("No build configuration selected. "
  99. + "Select a \".lst\" build configuration file in order to compile and navigate structure.");
  100. } else {
  101. Ajde.getDefault().getBuildConfigManager().setActiveConfigFile((String) configFiles.get(0));
  102. }
  103. }
  104. /**
  105. * Create the top frame of the browser
  106. */
  107. private void setUpTopFrame(boolean visible) {
  108. MultiStructureViewPanel multiViewPanel = new MultiStructureViewPanel(Ajde.getDefault().getViewManager().getBrowserPanel(),
  109. Ajde.getDefault().getFileStructurePanel());
  110. topFrame.init(multiViewPanel, new MessageHandlerPanel(), editorManager.getEditorPanel());
  111. if (visible)
  112. topFrame.setVisible(true);
  113. }
  114. public void resetEditorFrame() {
  115. topFrame.resetSourceEditorPanel();
  116. }
  117. public void resetEditor() {
  118. BrowserManager
  119. .getDefault()
  120. .getRootFrame()
  121. .setSize(BrowserManager.getDefault().getRootFrame().getWidth() + 1,
  122. BrowserManager.getDefault().getRootFrame().getHeight() + 1);
  123. BrowserManager.getDefault().getRootFrame().doLayout();
  124. BrowserManager.getDefault().getRootFrame().repaint();
  125. }
  126. public void setStatusInformation(String text) {
  127. topFrame.statusText_label.setText(text);
  128. }
  129. public void setEditorStatusText(String text) {
  130. topFrame.setTitle(BrowserManager.TITLE + " - " + text);
  131. }
  132. public void saveAll() {
  133. editorManager.saveContents();
  134. }
  135. public JFrame getRootFrame() {
  136. return topFrame;
  137. }
  138. public void openFile(String filePath) {
  139. try {
  140. if (filePath.endsWith(".lst")) {
  141. Ajde.getDefault().getBuildConfigEditor().openFile(filePath);
  142. topFrame.setEditorPanel(Ajde.getDefault().getBuildConfigEditor());
  143. } else if (FileUtil.hasSourceSuffix(filePath)) {
  144. editorManager.showSourceLine(filePath, 0, false);
  145. } else {
  146. BrowserErrorHandler.handleError("File: " + filePath
  147. + " could not be opened because the extension was not recoginzed.");
  148. }
  149. } catch (IOException ioe) {
  150. BrowserErrorHandler.handleError("Could not open file: " + filePath, ioe);
  151. } catch (InvalidResourceException ire) {
  152. BrowserErrorHandler.handleError("Invalid file: " + filePath, ire);
  153. }
  154. }
  155. private List<String> getConfigFilesList(String[] configFiles) {
  156. List<String> configs = new ArrayList<String>();
  157. for (String configFile : configFiles) {
  158. if (configFile.endsWith(BuildConfigManager.CONFIG_FILE_SUFFIX)) {
  159. configs.add(configFile);
  160. }
  161. }
  162. return configs;
  163. }
  164. /**
  165. * Add the different options panels to the main options frame (adds panels for java compliance, compiler warnings, debug
  166. * warnings, other java options and options specific to ajbrowser)
  167. */
  168. private void addOptionsPanels() {
  169. Ajde.getDefault().getOptionsFrame().addOptionsPanel(new JavaComplianceOptionsPanel(javaBuildOptions));
  170. Ajde.getDefault().getOptionsFrame().addOptionsPanel(new JavaCompilerWarningsOptionsPanel(javaBuildOptions));
  171. Ajde.getDefault().getOptionsFrame().addOptionsPanel(new JavaOtherOptionsPanel(javaBuildOptions));
  172. Ajde.getDefault().getOptionsFrame().addOptionsPanel(new JavaDebugOptionsPanel(javaBuildOptions));
  173. Ajde.getDefault().getOptionsFrame().addOptionsPanel(new BrowserOptionsPanel());
  174. }
  175. /**
  176. * @return the EditorManager
  177. */
  178. public EditorManager getEditorManager() {
  179. return editorManager;
  180. }
  181. /**
  182. * @return the UserPreferencesAdapter
  183. */
  184. public UserPreferencesAdapter getPreferencesAdapter() {
  185. return preferencesAdapter;
  186. }
  187. /**
  188. * @return the JavaBuildOptions instance being used
  189. */
  190. public JavaBuildOptions getJavaBuildOptions() {
  191. return javaBuildOptions;
  192. }
  193. }