package com.remainsoftware.ece2013.nebula.parts.project;
import java.util.LinkedList;
import java.util.List;
import javax.annotation.PostConstruct;
import org.eclipse.e4.ui.di.Focus;
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
import org.eclipse.e4.ui.workbench.modeling.EPartService;
import org.eclipse.e4.ui.workbench.modeling.EPartService.PartState;
import org.eclipse.nebula.effects.stw.Transition;
import org.eclipse.nebula.effects.stw.TransitionListener;
import org.eclipse.nebula.effects.stw.TransitionManager;
import org.eclipse.nebula.effects.stw.Transitionable;
import org.eclipse.nebula.effects.stw.transitions.SlideTransition;
import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.TabFolder;
import org.eclipse.swt.widgets.TabItem;
import org.mihalis.opal.imageSelector.ISItem;
import org.mihalis.opal.imageSelector.ImageSelector;
import com.remainsoftware.ece2013.nebula.parts.BasePart;
public class NebulaProject extends BasePart {
public static final String ID = "projectView";
public NebulaProject() {
}
private Composite comp1 = null;
private Composite comp2 = null;
private Composite comp3 = null;
private Composite comp4 = null;
private Composite comp5 = null;
private TabFolder tf;
@PostConstruct
public void createPart(final Composite parent) {
final Composite container = new Composite(parent, SWT.None);
container.setLayout(new FillLayout());
tf = new TabFolder(container, SWT.NONE);
TabItem tbi1 = new TabItem(tf, SWT.NONE);
tbi1.setText("Widgets");
tbi1.setControl(getComp1(tf));
TabItem tbi2 = new TabItem(tf, SWT.NONE);
tbi2.setText("Project Home");
tbi2.setControl(getComp2(tf));
TabItem tbi3 = new TabItem(tf, SWT.NONE);
tbi3.setText("Downloads ");
tbi3.setControl(getComp3(tf));
TabItem tbi4 = new TabItem(tf, SWT.NONE);
tbi4.setText("NatTable");
tbi4.setControl(getComp4(tf));
TabItem tbi5 = new TabItem(tf, SWT.NONE);
tbi5.setText("How to Contribute");
tbi5.setControl(getComp5(tf));
TransitionManager _tm = new TransitionManager(new Transitionable() {
public void addSelectionListener(SelectionListener listener) {
tf.addSelectionListener(listener);
}
public Control getControl(int index) {
return tf.getItem(index).getControl();
}
public Composite getComposite() {
return tf;
}
public int getSelection() {
return tf.getSelectionIndex();
}
public void setSelection(int index) {
tf.setSelection(index);
}
public double getDirection(int toIndex, int fromIndex) {
if (toIndex > fromIndex)
return Transition.DIR_LEFT;
else
return Transition.DIR_RIGHT;
}
});
_tm.setTransition(new SlideTransition(_tm, 250, 1000));
_tm.addTransitionListener(new TransitionListener() {
public void transitionFinished(TransitionManager transition) {
}
});
}
@Focus
void setFocus() {
comp1.setFocus();
}
private Composite getComp1(Composite parent) {
if (null == comp1) {
comp1 = new Composite(parent, SWT.NONE);
comp1.setLayout(new FillLayout());
final List<ISItem> items = new LinkedList<ISItem>();
items.add(new ISItem("CDateTime", "/img/gallery/cdatetime.png"));
items.add(new ISItem("Gallery", "/img/gallery/gallery.png"));
items.add(new ISItem("Gantt", "/img/gallery/gantt.png"));
items.add(new ISItem("Grid", "/img/gallery/grid.png"));
items.add(new ISItem("PaperClips", "/img/gallery/paperclips.png"));
items.add(new ISItem("PGroup", "/img/gallery/pgroup.png"));
items.add(new ISItem("PShelf", "/img/gallery/pshelf.png"));
items.add(new ISItem("Scope", "/img/gallery/scope.png"));
items.add(new ISItem("TableCombo", "/img/gallery/tablecombo.png"));
items.add(new ISItem("Transition", "/img/gallery/transition.png"));
items.add(new ISItem("XViewer", "/img/gallery/xviewer.png"));
final ImageSelector imageSelector = new ImageSelector(comp1, SWT.NONE);
imageSelector.setItems(items);
imageSelector.setPageIncrement(1);
}
return comp1;
}
private Composite getComp2(Composite parent) {
if (null == comp2) {
comp2 = new Composite(parent, SWT.NONE);
comp2.setLayout(new FillLayout());
Browser b = new Browser(comp2, SWT.None);
b.setUrl("http://eclipse.org/nebula");
}
return comp2;
}
private Composite getComp3(Composite parent) {
if (null == comp3) {
comp3 = new Composite(parent, SWT.NONE);
comp3.setLayout(new FillLayout());
Browser b = new Browser(comp3, SWT.None);
b.setUrl("http://eclipse.org/nebula/downloads.php");
}
return comp3;
}
private Composite getComp4(Composite parent) {
if (null == comp4) {
comp4 = new Composite(parent, SWT.NONE);
comp4.setLayout(new FillLayout());
Browser b = new Browser(comp4, SWT.None);
b.setUrl("http://eclipse.org/nattable/");
}
return comp4;
}
private Composite getComp5(Composite parent) {
if (null == comp5) {
comp5 = new Composite(parent, SWT.NONE);
comp5.setLayout(new FillLayout());
Browser b = new Browser(comp5, SWT.None);
b.setUrl("http://eclipse.org/nebula/contrib_process.php");
}
return comp5;
}
public static void open(EPartService partService) {
MPart part = partService.findPart(ID);
partService.showPart(part, PartState.ACTIVATE);
}
}