Initial commit
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 983 B |
@@ -0,0 +1,384 @@
|
||||
package $packageName$;
|
||||
|
||||
% if viewType =="treeViewer"
|
||||
import java.util.ArrayList;
|
||||
% endif
|
||||
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.ui.part.*;
|
||||
import org.eclipse.jface.viewers.*;
|
||||
import org.eclipse.swt.graphics.Image;
|
||||
import org.eclipse.jface.action.*;
|
||||
import org.eclipse.jface.dialogs.MessageDialog;
|
||||
import org.eclipse.ui.*;
|
||||
import org.eclipse.swt.widgets.Menu;
|
||||
import org.eclipse.swt.SWT;
|
||||
% if viewType == "treeViewer"
|
||||
import org.eclipse.core.runtime.IAdaptable;
|
||||
% endif
|
||||
|
||||
|
||||
/**
|
||||
* This sample class demonstrates how to plug-in a new
|
||||
* workbench view. The view shows data obtained from the
|
||||
* model. The sample creates a dummy model on the fly,
|
||||
* but a real implementation would connect to the model
|
||||
* available either in this or another plug-in (e.g. the workspace).
|
||||
* The view is connected to the model using a content provider.
|
||||
* <p>
|
||||
* The view uses a label provider to define how model
|
||||
* objects should be presented in the view. Each
|
||||
* view can present the same model objects using
|
||||
* different labels and icons, if needed. Alternatively,
|
||||
* a single label provider can be shared between views
|
||||
* in order to ensure that objects of the same type are
|
||||
* presented in the same way everywhere.
|
||||
* <p>
|
||||
*/
|
||||
% Options in the template:
|
||||
%
|
||||
% packageName
|
||||
% className
|
||||
% viewName
|
||||
% viewCategoryId
|
||||
% viewCategoryName
|
||||
% viewType
|
||||
% doubleClick
|
||||
% popup
|
||||
% localToolbar
|
||||
% localPulldown
|
||||
% sorter
|
||||
% filter
|
||||
% drillDown
|
||||
|
||||
public class $className$ extends ViewPart {
|
||||
%if viewType == "tableViewer"
|
||||
private TableViewer viewer;
|
||||
%else
|
||||
% if viewType == "treeViewer"
|
||||
private TreeViewer viewer;
|
||||
private DrillDownAdapter drillDownAdapter;
|
||||
% endif
|
||||
%endif
|
||||
%if (localToolbar || localPulldown || popup)
|
||||
private Action action1;
|
||||
private Action action2;
|
||||
%endif
|
||||
%if doubleClick
|
||||
private Action doubleClickAction;
|
||||
%endif
|
||||
|
||||
/*
|
||||
* The content provider class is responsible for
|
||||
* providing objects to the view. It can wrap
|
||||
* existing objects in adapters or simply return
|
||||
* objects as-is. These objects may be sensitive
|
||||
* to the current input of the view, or ignore
|
||||
* it and always show the same content
|
||||
* (like Task List, for example).
|
||||
*/
|
||||
|
||||
%if viewType == "tableViewer"
|
||||
class ViewContentProvider implements IStructuredContentProvider {
|
||||
public void inputChanged(Viewer v, Object oldInput, Object newInput) {
|
||||
}
|
||||
public void dispose() {
|
||||
}
|
||||
public Object[] getElements(Object parent) {
|
||||
return new String[] { "One", "Two", "Three" };
|
||||
}
|
||||
}
|
||||
%else
|
||||
% if viewType =="treeViewer"
|
||||
class TreeObject implements IAdaptable {
|
||||
private String name;
|
||||
private TreeParent parent;
|
||||
|
||||
public TreeObject(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
public void setParent(TreeParent parent) {
|
||||
this.parent = parent;
|
||||
}
|
||||
public TreeParent getParent() {
|
||||
return parent;
|
||||
}
|
||||
public String toString() {
|
||||
return getName();
|
||||
}
|
||||
public Object getAdapter(Class key) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
class TreeParent extends TreeObject {
|
||||
private ArrayList children;
|
||||
public TreeParent(String name) {
|
||||
super(name);
|
||||
children = new ArrayList();
|
||||
}
|
||||
public void addChild(TreeObject child) {
|
||||
children.add(child);
|
||||
child.setParent(this);
|
||||
}
|
||||
public void removeChild(TreeObject child) {
|
||||
children.remove(child);
|
||||
child.setParent(null);
|
||||
}
|
||||
public TreeObject [] getChildren() {
|
||||
return (TreeObject [])children.toArray(new TreeObject[children.size()]);
|
||||
}
|
||||
public boolean hasChildren() {
|
||||
return children.size()>0;
|
||||
}
|
||||
}
|
||||
|
||||
class ViewContentProvider implements IStructuredContentProvider,
|
||||
ITreeContentProvider {
|
||||
private TreeParent invisibleRoot;
|
||||
|
||||
public void inputChanged(Viewer v, Object oldInput, Object newInput) {
|
||||
}
|
||||
public void dispose() {
|
||||
}
|
||||
public Object[] getElements(Object parent) {
|
||||
if (parent.equals(getViewSite())) {
|
||||
if (invisibleRoot==null) initialize();
|
||||
return getChildren(invisibleRoot);
|
||||
}
|
||||
return getChildren(parent);
|
||||
}
|
||||
public Object getParent(Object child) {
|
||||
if (child instanceof TreeObject) {
|
||||
return ((TreeObject)child).getParent();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
public Object [] getChildren(Object parent) {
|
||||
if (parent instanceof TreeParent) {
|
||||
return ((TreeParent)parent).getChildren();
|
||||
}
|
||||
return new Object[0];
|
||||
}
|
||||
public boolean hasChildren(Object parent) {
|
||||
if (parent instanceof TreeParent)
|
||||
return ((TreeParent)parent).hasChildren();
|
||||
return false;
|
||||
}
|
||||
/*
|
||||
* We will set up a dummy model to initialize tree heararchy.
|
||||
* In a real code, you will connect to a real model and
|
||||
* expose its hierarchy.
|
||||
*/
|
||||
private void initialize() {
|
||||
TreeObject to1 = new TreeObject("Leaf 1");
|
||||
TreeObject to2 = new TreeObject("Leaf 2");
|
||||
TreeObject to3 = new TreeObject("Leaf 3");
|
||||
TreeParent p1 = new TreeParent("Parent 1");
|
||||
p1.addChild(to1);
|
||||
p1.addChild(to2);
|
||||
p1.addChild(to3);
|
||||
|
||||
TreeObject to4 = new TreeObject("Leaf 4");
|
||||
TreeParent p2 = new TreeParent("Parent 2");
|
||||
p2.addChild(to4);
|
||||
|
||||
TreeParent root = new TreeParent("Root");
|
||||
root.addChild(p1);
|
||||
root.addChild(p2);
|
||||
|
||||
invisibleRoot = new TreeParent("");
|
||||
invisibleRoot.addChild(root);
|
||||
}
|
||||
}
|
||||
% endif
|
||||
%endif
|
||||
%if viewType == "tableViewer"
|
||||
class ViewLabelProvider extends LabelProvider implements ITableLabelProvider {
|
||||
public String getColumnText(Object obj, int index) {
|
||||
return getText(obj);
|
||||
}
|
||||
public Image getColumnImage(Object obj, int index) {
|
||||
return getImage(obj);
|
||||
}
|
||||
public Image getImage(Object obj) {
|
||||
return PlatformUI.getWorkbench().
|
||||
getSharedImages().getImage(ISharedImages.IMG_OBJ_ELEMENT);
|
||||
}
|
||||
}
|
||||
%else
|
||||
class ViewLabelProvider extends LabelProvider {
|
||||
|
||||
public String getText(Object obj) {
|
||||
return obj.toString();
|
||||
}
|
||||
public Image getImage(Object obj) {
|
||||
String imageKey = ISharedImages.IMG_OBJ_ELEMENT;
|
||||
if (obj instanceof TreeParent)
|
||||
imageKey = ISharedImages.IMG_OBJ_FOLDER;
|
||||
return PlatformUI.getWorkbench().getSharedImages().getImage(imageKey);
|
||||
}
|
||||
}
|
||||
%endif
|
||||
%if sorter
|
||||
class NameSorter extends ViewerSorter {
|
||||
}
|
||||
%endif
|
||||
|
||||
/**
|
||||
* The constructor.
|
||||
*/
|
||||
public $className$() {
|
||||
}
|
||||
|
||||
/**
|
||||
* This is a callback that will allow us
|
||||
* to create the viewer and initialize it.
|
||||
*/
|
||||
public void createPartControl(Composite parent) {
|
||||
%if viewType =="tableViewer"
|
||||
viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
|
||||
%else
|
||||
% if viewType =="treeViewer"
|
||||
viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
|
||||
drillDownAdapter = new DrillDownAdapter(viewer);
|
||||
% endif
|
||||
%endif
|
||||
viewer.setContentProvider(new ViewContentProvider());
|
||||
viewer.setLabelProvider(new ViewLabelProvider());
|
||||
%if sorter
|
||||
viewer.setSorter(new NameSorter());
|
||||
%endif
|
||||
viewer.setInput(getViewSite());
|
||||
%if (localToolbar || localPulldown || popup)
|
||||
makeActions();
|
||||
%endif
|
||||
%if popup
|
||||
hookContextMenu();
|
||||
%endif
|
||||
%if doubleClick
|
||||
hookDoubleClickAction();
|
||||
%endif
|
||||
%if (localToolbar || localPulldown)
|
||||
contributeToActionBars();
|
||||
%endif
|
||||
}
|
||||
|
||||
%if popup
|
||||
private void hookContextMenu() {
|
||||
MenuManager menuMgr = new MenuManager("#PopupMenu");
|
||||
menuMgr.setRemoveAllWhenShown(true);
|
||||
menuMgr.addMenuListener(new IMenuListener() {
|
||||
public void menuAboutToShow(IMenuManager manager) {
|
||||
$className$.this.fillContextMenu(manager);
|
||||
}
|
||||
});
|
||||
Menu menu = menuMgr.createContextMenu(viewer.getControl());
|
||||
viewer.getControl().setMenu(menu);
|
||||
getSite().registerContextMenu(menuMgr, viewer);
|
||||
}
|
||||
%endif
|
||||
|
||||
%if (localToolbar || localPulldown)
|
||||
private void contributeToActionBars() {
|
||||
IActionBars bars = getViewSite().getActionBars();
|
||||
%if localPulldown
|
||||
fillLocalPullDown(bars.getMenuManager());
|
||||
%endif
|
||||
%if localToolbar
|
||||
fillLocalToolBar(bars.getToolBarManager());
|
||||
%endif
|
||||
}
|
||||
%endif
|
||||
|
||||
%if localPulldown
|
||||
private void fillLocalPullDown(IMenuManager manager) {
|
||||
manager.add(action1);
|
||||
manager.add(new Separator());
|
||||
manager.add(action2);
|
||||
}
|
||||
%endif
|
||||
|
||||
%if popup
|
||||
private void fillContextMenu(IMenuManager manager) {
|
||||
manager.add(action1);
|
||||
manager.add(action2);
|
||||
% if viewType == "treeViewer"
|
||||
manager.add(new Separator());
|
||||
drillDownAdapter.addNavigationActions(manager);
|
||||
% endif
|
||||
// Other plug-ins can contribute there actions here
|
||||
manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
|
||||
}
|
||||
%endif
|
||||
|
||||
%if localToolbar
|
||||
private void fillLocalToolBar(IToolBarManager manager) {
|
||||
manager.add(action1);
|
||||
manager.add(action2);
|
||||
% if viewType == "treeViewer"
|
||||
manager.add(new Separator());
|
||||
drillDownAdapter.addNavigationActions(manager);
|
||||
% endif
|
||||
}
|
||||
%endif
|
||||
|
||||
%if (localToolbar || localPulldown || popup)
|
||||
private void makeActions() {
|
||||
action1 = new Action() {
|
||||
public void run() {
|
||||
showMessage("Action 1 executed");
|
||||
}
|
||||
};
|
||||
action1.setText("Action 1");
|
||||
action1.setToolTipText("Action 1 tooltip");
|
||||
action1.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().
|
||||
getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TSK));
|
||||
|
||||
action2 = new Action() {
|
||||
public void run() {
|
||||
showMessage("Action 2 executed");
|
||||
}
|
||||
};
|
||||
action2.setText("Action 2");
|
||||
action2.setToolTipText("Action 2 tooltip");
|
||||
action2.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().
|
||||
getImageDescriptor(ISharedImages.IMG_OBJS_TASK_TSK));
|
||||
% if doubleClick
|
||||
doubleClickAction = new Action() {
|
||||
public void run() {
|
||||
ISelection selection = viewer.getSelection();
|
||||
Object obj = ((IStructuredSelection)selection).getFirstElement();
|
||||
showMessage("Double-click detected on "+obj.toString());
|
||||
}
|
||||
};
|
||||
% endif
|
||||
}
|
||||
%endif
|
||||
|
||||
%if doubleClick
|
||||
private void hookDoubleClickAction() {
|
||||
viewer.addDoubleClickListener(new IDoubleClickListener() {
|
||||
public void doubleClick(DoubleClickEvent event) {
|
||||
doubleClickAction.run();
|
||||
}
|
||||
});
|
||||
}
|
||||
%endif
|
||||
private void showMessage(String message) {
|
||||
MessageDialog.openInformation(
|
||||
viewer.getControl().getShell(),
|
||||
"$viewName$",
|
||||
message);
|
||||
}
|
||||
|
||||
/**
|
||||
* Passing the focus request to the viewer's control.
|
||||
*/
|
||||
public void setFocus() {
|
||||
viewer.getControl().setFocus();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user