moduleeditor.java

来自「一个eclipse插件源代码。用于web开发」· Java 代码 · 共 585 行 · 第 1/2 页

JAVA
585
字号
			//大纲页
				showOutlineAction.setChecked(true);
				showOverviewAction.setChecked(false);
				pageBook.showPage(outline);
				if (thumbnail != null)
					thumbnail.setVisible(false);
			} else if (id == ID_OVERVIEW) {
				//导航页
				if (thumbnail == null)
					initializeOverview();
				showOutlineAction.setChecked(false);
				showOverviewAction.setChecked(true);
				pageBook.showPage(overview);
				thumbnail.setVisible(true);
			}
		}

		/**
		 * unhook outline viewer
		 */
		protected void unhookOutlineViewer() {
			getSelectionSynchronizer().removeViewer(getViewer());
		}
	}

	/**
	 * Class for Resource Tracker
	 * 
	 * @author shi_l
	 * @version 2.0.0 2004-5-30
	 */
	class ResourceTracker implements IResourceChangeListener, IResourceDeltaVisitor {
		/**
		 * Resource changed
		 * @param event IResourceChangeEvent
		 */
		public void resourceChanged(IResourceChangeEvent event) {
			//文?资源发生变化
			IResourceDelta delta = event.getDelta();
			try {
				if (delta != null)
					delta.accept(this);
			} catch (CoreException exception) {
				WebpumpIDEPlugin.log(exception);
			}
		}

		/**
		 * Visit
		 * @param delta IResourceDelta
		 */
		public boolean visit(IResourceDelta delta) {
			if (delta == null
				|| !delta.getResource().equals(((FileEditorInput) getEditorInput()).getFile()))
				return true;

			//资源被删?
			if (delta.getKind() == IResourceDelta.REMOVED) {
				if ((IResourceDelta.MOVED_TO & delta.getFlags()) == 0) { // if the file was deleted
					// NOTE: The case where an open, unsaved file is deleted is being handled by the 
					// PartListener added to the Workbench in the initialize() method.
					if (!isDirty())
						closeEditor(false);
				} else { // else if it was moved or renamed
					final IFile newFile =
						ResourcesPlugin.getWorkspace().getRoot().getFile(delta.getMovedToPath());
					Display display = getSite().getShell().getDisplay();
					display.asyncExec(new Runnable() {
						public void run() {
							superSetInput(new FileEditorInput(newFile));
						}
					});
				}
			}
			return false;
		}
	}

	/**Palette Root*/
	private PaletteRoot m_objRoot;

	/**ClipBoard of the editor*/
	private static org.eclipse.swt.dnd.Clipboard m_objClipBoard;

	/**Module*/
	private Module m_objModule;

	/**Resource tracker*/
	private ResourceTracker resourceListener = new ResourceTracker();

	/**Key handler*/
	private KeyHandler sharedKeyHandler;

	/**Flag for need of save previously*/
	private boolean savePreviouslyNeeded = false;

	/**Input File*/
	private static IFile m_objInputFile;

	/**Command Stack*/
	private static ModuleCommandStack m_objCommandStack;

	/**
	 * Constructor 
	 */
	public ModuleEditor() {
		DefaultEditDomain domain = new DefaultEditDomain(this);
		ModuleCommandStack commandStack = new ModuleCommandStack();
		domain.setCommandStack(commandStack);
		m_objCommandStack = commandStack;
		setEditDomain(domain);
		m_objModule = new Module();
	}

	/**
	 * Get palette root
	 * @return m_objRoot Palette Root
	 */
	protected PaletteRoot getPaletteRoot() {
		if (m_objRoot == null) {
			m_objRoot = WebpumpIDEPlugin.createPalette();
		}
		return m_objRoot;
	}

	/**
	 * Configure graphical viewer
	 */
	protected void configureGraphicalViewer() {
		//配置图形视图
		super.configureGraphicalViewer();
		ScrollingGraphicalViewer viewer = (ScrollingGraphicalViewer) getGraphicalViewer();

		ScalableFreeformRootEditPart root = new ScalableFreeformRootEditPart();

		List zoomLevels = new ArrayList(3);
		zoomLevels.add(ZoomManager.FIT_ALL);
		zoomLevels.add(ZoomManager.FIT_WIDTH);
		zoomLevels.add(ZoomManager.FIT_HEIGHT);
		root.getZoomManager().setZoomLevelContributions(zoomLevels);

		IAction zoomIn = new ZoomInAction(root.getZoomManager());
		IAction zoomOut = new ZoomOutAction(root.getZoomManager());
		getActionRegistry().registerAction(zoomIn);
		getActionRegistry().registerAction(zoomOut);
		getSite().getKeyBindingService().registerAction(zoomIn);
		getSite().getKeyBindingService().registerAction(zoomOut);

		viewer.setRootEditPart(root);

		viewer.setEditPartFactory(new ModelEditPartFactory());
		ContextMenuProvider provider = new ModuleContextMenuProvider(viewer, getActionRegistry());
		viewer.setContextMenu(provider);
		getSite().registerContextMenu("com.webpump.ui.gefmodule.contextmenu", //$NON-NLS-1$
		provider, viewer);
		viewer.setKeyHandler(
			new GraphicalViewerKeyHandler(viewer).setParent(getCommonKeyHandler()));
	}

	/**
	 * Configure palette viewer
	 */
	protected void configurePaletteViewer() {
		//配置左边铁赜视图
		super.configurePaletteViewer();
		PaletteViewer viewer = (PaletteViewer) getPaletteViewer();
		ContextMenuProvider provider = new PaletteContextMenuProvider(viewer);
		getPaletteViewer().setContextMenu(provider);
		//		viewer.setCustomizer(new LogicPaletteCustomizer());
	}

	/**
	 * Initalize graphical viewer
	 */
	protected void initializeGraphicalViewer() {
		//初始化图形视图
		getGraphicalViewer().setContents(getModule());
		WebpumpIDEPlugin.setShell(getGraphicalViewer().getControl().getShell());
		WebpumpIDEPlugin.setDisplay(getGraphicalViewer().getControl().getDisplay());
		m_objClipBoard = new Clipboard(WebpumpIDEPlugin.getDisplay());
		final CopyTemplateAction copy =
			(CopyTemplateAction) getActionRegistry().getAction(GEFActionConstants.COPY);
		getGraphicalViewer().addSelectionChangedListener(copy);
	}

	/**
	 * Do save
	 * @param monitor IProgressMonitor
	 */
	public void doSave(IProgressMonitor monitor) {
		try 
		{
			IFile file = ((IFileEditorInput) getEditorInput()).getFile();

			ProjectModel objProjectModel = WebpumpIDEPlugin.getProjectModel(file,false);
			String strCharset = ((ProjectInfo)objProjectModel.getDataObject()).getProjectInfo()[5];
						
			ByteArrayOutputStream out = new ByteArrayOutputStream();
			createOutputStream(out , strCharset);
			file.setContents(
				new ByteArrayInputStream(out.toString().getBytes(strCharset)),
				true,
				false,
				monitor);

			out.close();
			getCommandStack().markSaveLocation();
		} catch (Exception e) {
			e.printStackTrace();
			WebpumpIDEPlugin.log(e);
		}
	}

	/**
	 * Do save as
	 */
	public void doSaveAs() {
		performSaveAs();
	}

	/**
	 * Goto Marker
	 * @param marker IMarker
	 */
	public void gotoMarker(IMarker marker) {

	}

	/**
	 * Is dirty
	 * @return isSaveOnCloseNeeded boolean
	 */
	public boolean isDirty() {
		return isSaveOnCloseNeeded();
	}

	/**
	 * Is save as allowed
	 * @return true
	 */
	public boolean isSaveAsAllowed() {
		return true;
	}

	/**
	 * Get initial palette size
	 * @return 20
	 */
	protected int getInitialPaletteSize() {
		return 20;
	}

	/**
	 * Create part control
	 * @param parent Composite
	 */
	public void createPartControl(Composite parent) {
		//创建控?
		ModuleSplitter splitter = new ModuleSplitter(parent, SWT.HORIZONTAL);
		createPaletteViewer(splitter);
		createGraphicalViewer(splitter);
		splitter.maintainSize(getPaletteViewer().getControl());
		splitter.setFixedSize(getInitialPaletteSize());
		splitter.addFixedSizeChangeListener(new PropertyChangeListener() {
			public void propertyChange(PropertyChangeEvent evt) {
				handlePaletteResized(((ModuleSplitter) evt.getSource()).getFixedSize());
			}
		});
	}

	/**
	 * Create actions
	 */
	protected void createActions() {
		super.createActions();
		ActionRegistry registry = getActionRegistry();
		IAction action;
		
		//创建资源
		action = new CreateSourceAction(this);
		registry.registerAction(action);

		//复制
		action = new CopyAction(this);
		registry.registerAction(action);

		//粘?
		action = new PasteAction(this);
		registry.registerAction(action);
		getSelectionActions().add(action.getId());

		//页面

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?