moduleeditor.java
来自「一个eclipse插件源代码。用于web开发」· Java 代码 · 共 585 行 · 第 1/2 页
JAVA
585 行
/*
* $Header: /home/cvs/WEBPUMP2.0/WebPumpIDE_Src/WebPumpIDE/src/com/webpump/ui/gefmodule/ModuleEditor.java,v 1.2 2004/12/29 09:45:30 wang_j Exp $
* $Revision: 1.2 $
* $Date: 2004/12/29 09:45:30 $
*
* ====================================================================
*
* The NanJing HopeRun(IT-FOREST) Software License, Version 2.0.0
*
* Copyright 2003-2004 by NanJing HopeRun(IT-FOREST) Information System Co., Ltd, CHINA and
* IT Forest Corporation
* All rights reserved.
*
* This software is the confidential and proprietary information of
* HopeRun(IT-FOREST) Information System Co., Ltd, CHINA and IT Forest Corporation.
* You shall not disclose such Confidential Information and shall use it only in
* accordance with the terms of the license agreement you entered into with
* HopeRun(IT-FOREST) Information System Co., Ltd, CHINA and IT Forest Corporation.
*/
package com.webpump.ui.gefmodule;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.EventObject;
import java.util.List;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IResourceChangeEvent;
import org.eclipse.core.resources.IResourceChangeListener;
import org.eclipse.core.resources.IResourceDelta;
import org.eclipse.core.resources.IResourceDeltaVisitor;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.draw2d.LightweightSystem;
import org.eclipse.draw2d.MarginBorder;
import org.eclipse.draw2d.PositionConstants;
import org.eclipse.draw2d.Viewport;
import org.eclipse.draw2d.parts.ScrollableThumbnail;
import org.eclipse.draw2d.parts.Thumbnail;
import org.eclipse.gef.ContextMenuProvider;
import org.eclipse.gef.DefaultEditDomain;
import org.eclipse.gef.EditPartViewer;
import org.eclipse.gef.KeyHandler;
import org.eclipse.gef.KeyStroke;
import org.eclipse.gef.LayerConstants;
import org.eclipse.gef.RootEditPart;
import org.eclipse.gef.editparts.ScalableFreeformRootEditPart;
import org.eclipse.gef.editparts.ZoomManager;
import org.eclipse.gef.palette.PaletteRoot;
import org.eclipse.gef.ui.actions.ActionRegistry;
import org.eclipse.gef.ui.actions.AlignmentAction;
import org.eclipse.gef.ui.actions.CopyTemplateAction;
import org.eclipse.gef.ui.actions.DirectEditAction;
import org.eclipse.gef.ui.actions.GEFActionConstants;
import org.eclipse.gef.ui.actions.ZoomInAction;
import org.eclipse.gef.ui.actions.ZoomOutAction;
import org.eclipse.gef.ui.palette.PaletteContextMenuProvider;
import org.eclipse.gef.ui.palette.PaletteViewer;
import org.eclipse.gef.ui.parts.ContentOutlinePage;
import org.eclipse.gef.ui.parts.GraphicalEditorWithPalette;
import org.eclipse.gef.ui.parts.GraphicalViewerKeyHandler;
import org.eclipse.gef.ui.parts.ScrollingGraphicalViewer;
import org.eclipse.gef.ui.parts.TreeViewer;
import org.eclipse.gef.ui.stackview.CommandStackInspectorPage;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.dialogs.ProgressMonitorDialog;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.dnd.Clipboard;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IActionBars;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IFileEditorInput;
import org.eclipse.ui.IWorkbenchActionConstants;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.actions.WorkspaceModifyOperation;
import org.eclipse.ui.dialogs.SaveAsDialog;
import org.eclipse.ui.part.FileEditorInput;
import org.eclipse.ui.part.IPageSite;
import org.eclipse.ui.part.PageBook;
import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
import com.webpump.ui.gefmodule.action.CopyAction;
import com.webpump.ui.gefmodule.action.CreateSourceAction;
import com.webpump.ui.gefmodule.action.MaxMinAction;
import com.webpump.ui.gefmodule.action.PasteAction;
import com.webpump.ui.gefmodule.edit.ModelEditPartFactory;
import com.webpump.ui.gefmodule.edit.TreePartFactory;
import com.webpump.ui.gefmodule.model.Module;
import com.webpump.ui.perspective.WebpumpIDEPlugin;
import com.webpump.ui.project.ProjectInfo;
import com.webpump.ui.project.ProjectModel;
/**
* Class for ModuleEditor
*
* @author shi_l
* @version 2.0.0 2004-5-30
*/
public class ModuleEditor extends GraphicalEditorWithPalette {
/**
* Class for Outline Page
*
* @author shi_l
* @version 2.0.0 2004-5-30
*/
class OutlinePage extends ContentOutlinePage implements IAdaptable {
/**PageBook of the Outline Page*/
private PageBook pageBook;
/**Outline*/
private Control outline;
/**Over View*/
private Canvas overview;
/**Action of showing outline*/
private IAction showOutlineAction;
/**Action of showing overview*/
private IAction showOverviewAction;
/**ID of the outline*/
static final int ID_OUTLINE = 0;
/**ID of the over view*/
static final int ID_OVERVIEW = 1;
/***/
private Thumbnail thumbnail;
/**
* Constructor
* @param viewer EditPartViewer
*/
public OutlinePage(EditPartViewer viewer) {
super(viewer);
}
/**
* Init the Outline
* @param pageSite IPageSite
*/
public void init(IPageSite pageSite) {
super.init(pageSite);
//设置?准操?
ActionRegistry registry = getActionRegistry();
IActionBars bars = pageSite.getActionBars();
String id = IWorkbenchActionConstants.UNDO;
bars.setGlobalActionHandler(id, registry.getAction(id));
id = IWorkbenchActionConstants.REDO;
bars.setGlobalActionHandler(id, registry.getAction(id));
id = IWorkbenchActionConstants.DELETE;
bars.setGlobalActionHandler(id, registry.getAction(id));
bars.updateActionBars();
}
/**
* Config the outline view
*/
protected void configureOutlineViewer() {
//配置大纲视图
getViewer().setEditDomain(getEditDomain());
getViewer().setEditPartFactory(new TreePartFactory());
ContextMenuProvider provider =
new ModuleContextMenuProvider(getViewer(), getActionRegistry());
getViewer().setContextMenu(provider);
getSite().registerContextMenu("com.webpump.ui.gefmodule.outline.contextmenu", //$NON-NLS-1$
provider, getSite().getSelectionProvider());
getViewer().setKeyHandler(getCommonKeyHandler());
IToolBarManager tbm = getSite().getActionBars().getToolBarManager();
showOutlineAction = new Action() {
public void run() {
showPage(ID_OUTLINE);
}
};
showOutlineAction.setImageDescriptor(ImageDescriptor.createFromFile(ModuleEditor.class, "icons/outline.gif")); //$NON-NLS-1$
tbm.add(showOutlineAction);
showOverviewAction = new Action() {
public void run() {
showPage(ID_OVERVIEW);
}
};
showOverviewAction.setImageDescriptor(ImageDescriptor.createFromFile(ModuleEditor.class, "icons/overview.gif")); //$NON-NLS-1$
tbm.add(showOverviewAction);
showPage(ID_OUTLINE);
}
/**
* Create Control of the outline
* @param parent Composite
*/
public void createControl(Composite parent) {
pageBook = new PageBook(parent, SWT.NONE);
//大纲页
outline = getViewer().createControl(pageBook);
//导航页
overview = new Canvas(pageBook, SWT.NONE);
pageBook.showPage(outline);
configureOutlineViewer();
hookOutlineViewer();
initializeOutlineViewer();
}
/**
* Dispose
*/
public void dispose() {
unhookOutlineViewer();
if (thumbnail != null)
thumbnail.deactivate();
super.dispose();
}
/**
* Get Adapter
* @param type Class
*/
public Object getAdapter(Class type) {
if (type == ZoomManager.class)
return ((ScalableFreeformRootEditPart) getGraphicalViewer().getRootEditPart())
.getZoomManager();
return null;
}
/**
* Get control
* @return pageBook Control
*/
public Control getControl() {
return pageBook;
}
/**
* hook outline view
*/
protected void hookOutlineViewer() {
getSelectionSynchronizer().addViewer(getViewer());
}
/**
* Initialize the outlineview
*/
protected void initializeOutlineViewer() {
getViewer().setContents(getModule());
}
/**
* Initialize the over view
*/
protected void initializeOverview() {
//初始化导航视图
LightweightSystem lws = new LightweightSystem(overview);
RootEditPart rep = getGraphicalViewer().getRootEditPart();
if (rep instanceof ScalableFreeformRootEditPart) {
ScalableFreeformRootEditPart root = (ScalableFreeformRootEditPart) rep;
thumbnail = new ScrollableThumbnail((Viewport) root.getFigure());
thumbnail.setBorder(new MarginBorder(3));
thumbnail.setSource(root.getLayer(LayerConstants.PRINTABLE_LAYERS));
lws.setContents(thumbnail);
}
}
/**
* Show page
* @param id int
*/
protected void showPage(int id) {
if (id == ID_OUTLINE) {
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?