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 + -
显示快捷键?