package com.remainsoftware.ece2013.nebula.parts.stw;
import org.eclipse.jface.layout.TableColumnLayout;
import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.jface.viewers.ColumnWeightData;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TableViewerColumn;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.wb.swt.ResourceManager;
import org.osgi.framework.FrameworkUtil;
public class GithubStyleComposite extends Composite implements
ISelectionChangedListener {
private static class ContentProvider implements IStructuredContentProvider {
public Object[] getElements(Object inputElement) {
return ((XFile) inputElement).getChildren().toArray();
}
public void dispose() {
}
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
}
}
private Table table;
private TableViewer viewer;
private SelectionListener transistionListener;
private XFile selection;
/**
* Create the composite.
*
* @param parent
* @param style
*/
public GithubStyleComposite(Composite parent, int style) {
super(parent, style);
setLayout(new FillLayout(SWT.HORIZONTAL));
Composite composite = new Composite(this, SWT.NONE);
TableColumnLayout tcl_composite = new TableColumnLayout();
composite.setLayout(tcl_composite);
viewer = new TableViewer(composite, SWT.BORDER | SWT.FULL_SELECTION);
table = viewer.getTable();
table.setLinesVisible(true);
TableViewerColumn tableViewerColumn = new TableViewerColumn(viewer,
SWT.NONE);
tableViewerColumn.setLabelProvider(new ColumnLabelProvider() {
private String bundleId = FrameworkUtil.getBundle(getClass())
.getSymbolicName();
public Image getImage(Object element) {
if (((XFile) element).getChildren().size() > 0) {
return ResourceManager.getPluginImage(bundleId,
"/icons/folder.gif");
} else
return ResourceManager.getPluginImage(bundleId,
"/icons/file.png");
}
public String getText(Object element) {
return ((XFile) element).getName();
}
});
TableColumn tblclmnNewColumn = tableViewerColumn.getColumn();
tcl_composite.setColumnData(tblclmnNewColumn, new ColumnWeightData(1,
ColumnWeightData.MINIMUM_WIDTH, true));
tblclmnNewColumn.setText("name");
TableViewerColumn tableViewerColumn_1 = new TableViewerColumn(viewer,
SWT.NONE);
tableViewerColumn_1.setLabelProvider(new ColumnLabelProvider() {
public Image getImage(Object element) {
return null;
}
public String getText(Object element) {
return ((XFile) element).getDescription();
}
});
TableColumn tblclmnNewColumn_1 = tableViewerColumn_1.getColumn();
tcl_composite.setColumnData(tblclmnNewColumn_1, new ColumnWeightData(1,
ColumnWeightData.MINIMUM_WIDTH, true));
tblclmnNewColumn_1.setText("New Column");
viewer.setContentProvider(new ContentProvider());
viewer.addSelectionChangedListener(this);
viewer.setInput(new XFile(null, "", "parent", true));
}
public void setInput(XFile file) {
viewer.setInput(file);
}
@Override
protected void checkSubclass() {
}
public void setTransitionListener(SelectionListener transistionListener) {
this.transistionListener = transistionListener;
}
@Override
public void selectionChanged(SelectionChangedEvent event) {
if (event.getSelection().isEmpty()) {
return;
}
if (transistionListener != null) {
selection = (XFile) ((IStructuredSelection) viewer.getSelection())
.getFirstElement();
Event event2 = new Event();
event2.data = event;
event2.widget = this;
transistionListener.widgetSelected(new SelectionEvent(event2));
}
}
public XFile getSelection() {
return selection;
}
}