blob: 1e4d10235a8e53d30a5c6ac8bbfc10c66ba89695 [file] [log] [blame]
/******************************************************************************
* Copyright (c) 2009-2010 Texas Center for Applied Technology
* Texas Engineering Experiment Station
* The Texas A&M University System
* All Rights Reserved.
*
* This program and the accompanying materials
* are 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:
* Austin Riddle (Texas Center for Applied Technology) -
* initial demo implementation
*****************************************************************************/
package org.eclipse.rap.gef.demo;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
import org.eclipse.draw2d.examples.cg.ObstructionExample;
import org.eclipse.draw2d.examples.connections.ConnectionAndAnchorExample;
import org.eclipse.draw2d.examples.graph.CompoundGraphDemo;
import org.eclipse.draw2d.examples.graph.DirectedGraphDemo;
import org.eclipse.draw2d.examples.layouts.FlowLayoutExample;
import org.eclipse.draw2d.examples.layouts.GridLayoutExample;
import org.eclipse.draw2d.examples.layouts.ToolbarLayoutExample;
import org.eclipse.draw2d.examples.scrollpane.ScrollPaneExample;
import org.eclipse.draw2d.examples.tree.SimpleTreeExample;
import org.eclipse.draw2d.examples.tree.TreeExample;
import org.eclipse.draw2d.rap.swt.SWT;
import org.eclipse.gef.examples.flow.ui.FlowEditorView;
import org.eclipse.gef.examples.logicdesigner.LogicEditorView;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.ListViewer;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.rwt.lifecycle.IEntryPoint;
import org.eclipse.rwt.lifecycle.UICallBack;
import org.eclipse.swt.custom.SashForm;
import org.eclipse.swt.custom.StackLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.part.ViewPart;
/**
* This class controls all aspects of the application's execution
* and is contributed through the plugin.xml.
*/
public class Application implements IEntryPoint
{
public int createUI()
{
Display display = PlatformUI.createDisplay();
PlatformUI.createAndRunWorkbench(display, new ApplicationWorkbenchAdvisor());
return 0;
}
public static class Draw2DExampleView extends ViewPart
{
private Map examples;
private Map controls;
private StackLayout layout;
private Composite demoContent;
public void createPartControl (final Composite parent)
{
UICallBack.activate(getSite().getId()+getViewSite().getSecondaryId());
SashForm form = new SashForm(parent, SWT.HORIZONTAL);
final ListViewer exampleList = new ListViewer(form, SWT.V_SCROLL | SWT.BORDER);
exampleList.setContentProvider(new ArrayContentProvider());
exampleList.setLabelProvider(new LabelProvider());
examples = new TreeMap();
controls = new HashMap();
demoContent = new Composite(form, SWT.BORDER);
layout = new StackLayout();
demoContent.setLayout(layout);
layout.topControl = new Composite(demoContent, SWT.NONE);
demoContent.update();
demoContent.layout(true);
examples.put("Compound Graph", new Runnable() {public void run() {new CompoundGraphDemo().run(demoContent);}});
examples.put("Directed Graph", new Runnable() {public void run() {new DirectedGraphDemo().run(demoContent);}});
examples.put("Connection and Anchor", new Runnable() {public void run() {new ConnectionAndAnchorExample().run(demoContent);}});
examples.put("Obstruction", new Runnable() {public void run() {new ObstructionExample().run(demoContent);}});
// examples.put("Ellipse Hitting", new Runnable() {public void run() {new EllipseHitting().run(demoContent);}});
examples.put("Flow Layout", new Runnable() {public void run() {new FlowLayoutExample().run(demoContent);}});
examples.put("Grid Layout", new Runnable() {public void run() {new GridLayoutExample().run(demoContent);}});
examples.put("Toolbar Layout", new Runnable() {public void run() {new ToolbarLayoutExample().run(demoContent);}});
// examples.put("Paths", new Runnable() {public void run() {new PathExample().run(demoContent);}});
examples.put("Scroll Pane", new Runnable() {public void run() {new ScrollPaneExample().run(demoContent);}});
// examples.put("Shape Styles", new Runnable() {public void run() {new ShapeStylesExample().run(demoContent);}});
// examples.put("Thumbnail", new Runnable() {public void run() {new ThumbnailExample().run(demoContent);}});
examples.put("Tree", new Runnable() {public void run() {new TreeExample().run(demoContent);}});
examples.put("Simple Tree", new Runnable() {public void run() {new SimpleTreeExample().run(demoContent);}});
// examples.put("Zoom", new Runnable() {public void run() {new ZoomExample().run(demoContent);}});
exampleList.setInput(examples.keySet());
exampleList.addSelectionChangedListener(new ISelectionChangedListener() {
public void selectionChanged(SelectionChangedEvent event) {
IStructuredSelection selection = (IStructuredSelection)event.getSelection();
Object selElem = selection.getFirstElement();
Object ctrl = controls.get(selElem);
if (ctrl == null) {
Runnable runner = (Runnable)examples.get(selElem);
runner.run();
Control[] children = demoContent.getChildren();
ctrl = children[children.length-1];
controls.put(selElem, ctrl);
}
layout.topControl = (Control)ctrl;
demoContent.update();
demoContent.layout(true);
}
});
form.setWeights(new int[] {1,3});
}
public void setFocus()
{
}
public void dispose() {
UICallBack.deactivate(getSite().getId()+getViewSite().getSecondaryId());
super.dispose();
}
}
public static class FlowExampleView extends FlowEditorView
{
//further implementation coming
}
public static class LogicExampleView extends LogicEditorView
{
//further implementation coming
}
}