/*******************************************************************************
* Copyright (c) 2007 Exadel, Inc. and Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is 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:
* Exadel, Inc. and Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.common.model.ui.editor;
import java.util.*;
import org.eclipse.core.resources.*;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.ITextOperationTarget;
import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.ui.*;
import org.eclipse.ui.actions.ActionFactory;
import org.eclipse.ui.part.EditorPart;
import org.eclipse.ui.texteditor.*;
import org.jboss.tools.common.model.ui.ModelUIPlugin;
import org.jboss.tools.common.model.ui.resources.ResourceLayoutManager;
import org.jboss.tools.common.model.ui.texteditors.TextActionHelper;
public class DefaultEditorPart extends EditorPart implements ITextEditor, ITextOperationTarget {
private Map<String,IAction> actions = new HashMap<String,IAction>();
private ArrayList<String> actionMapping = new ArrayList<String>();
public IDocumentProvider getDocumentProvider() {
return null;
}
public void close(boolean save) {
store();
}
public boolean isEditable() {
return false;
}
public void doRevertToSaved() {
}
public void setAction(String actionID, IAction action) {
actions.put(actionID, action);
}
public IAction getAction(String id) {
return actions.get(id);
}
public void setActionActivationCode(String actionId, char activationCharacter, int activationKeyCode, int activationStateMask) {
}
public void removeActionActivationCode(String actionId) {
}
public boolean showsHighlightRangeOnly() {
return false;
}
public void showHighlightRangeOnly(boolean showHighlightRangeOnly) {
}
public void setHighlightRange(int offset, int length, boolean moveCursor) {
}
public IRegion getHighlightRange() {
return null;
}
public void resetHighlightRange() {}
public void selectAndReveal(int offset, int length) {}
public void gotoMarker(IMarker marker) {
}
public void init(IEditorSite site, IEditorInput input) throws PartInitException {
setSite(site);
setInput(input);
if (input instanceof IFileEditorInput) {
// memento = new MementoDOM(ResourceLayoutManager.getDefault().getLayoutElement(getFile(), "TreeFormPage"));
}
}
public void addPropertyListener(IPropertyListener listener) {
}
public void createPartControl(Composite parent) {
createControl(parent);
createActions();
}
protected Control createControl(Composite parent) {
return null;
}
public Image getTitleImage() {
return null;
}
public String getTitleToolTip() {
return null;
}
public void removePropertyListener(IPropertyListener listener) {
}
public void setFocus() {
}
public Object getAdapter(Class adapter) {
if (ITextOperationTarget.class.equals(adapter)) return this;
return null;
}
private IFile getFile() {
return ((IFileEditorInput)getEditorInput()).getFile();
}
private void store() {
IFile file = getFile();
if(file == null) return;
ResourceLayoutManager.getDefault().store(file);
}
public void doSave(IProgressMonitor monitor) {
store();
}
public void doSaveAs() {
store();
}
public boolean isDirty() {
return false;
}
public boolean isSaveAsAllowed() {
return false;
}
public boolean isSaveOnCloseNeeded() {
return false;
}
public boolean canDoOperation(int operation) {
Collection actions = this.actions.values();
Iterator i = actions.iterator();
IAction action;
while (i.hasNext()) {
action = (IAction)i.next();
if(action.isEnabled()) {
return true;
}
}
return true;
}
public void doOperation(int operation) {
if (operation>actionMapping.size()) {
ModelUIPlugin.getPluginLog().logError(new IllegalArgumentException("Can not find global action with index: "+operation)); //$NON-NLS-1$
} else {
String globalAction = (String)actionMapping.get(operation);
this.doGlobalAction(globalAction);
}
}
protected void createActions() {
actionMapping.add(null);
actionMapping.add(ITextOperationTarget.UNDO, ActionFactory.UNDO.getId());
actionMapping.add(ITextOperationTarget.REDO, ActionFactory.REDO.getId());
actionMapping.add(ITextOperationTarget.CUT, ActionFactory.CUT.getId());
actionMapping.add(ITextOperationTarget.COPY, ActionFactory.COPY.getId());
actionMapping.add(ITextOperationTarget.PASTE, ActionFactory.PASTE.getId());
actionMapping.add(ITextOperationTarget.DELETE, ActionFactory.DELETE.getId());
actionMapping.add(ITextOperationTarget.SELECT_ALL, ActionFactory.SELECT_ALL.getId());
actionMapping.add(ITextOperationTarget.SHIFT_RIGHT, ITextEditorActionConstants.SHIFT_RIGHT);
actionMapping.add(ITextOperationTarget.SHIFT_LEFT, ITextEditorActionConstants.SHIFT_LEFT);
actionMapping.add(ITextOperationTarget.PRINT, ActionFactory.PRINT.getId());
TextActionHelper.addCutAction(this);
TextActionHelper.addCopyAction(this);
TextActionHelper.addPasteAction(this);
TextActionHelper.addDeleteAction(this);
}
public void doGlobalAction(String action) {
}
public ISelectionProvider getSelectionProvider() {
return null;
}
public void dispose() {
}
}