|
- package xyz.veronie.bgg.ui.parts;
-
- import java.util.List;
-
- import javax.annotation.PostConstruct;
- import javax.inject.Inject;
-
- import org.eclipse.e4.core.di.annotations.Optional;
- import org.eclipse.e4.core.services.events.IEventBroker;
- import org.eclipse.e4.ui.di.UIEventTopic;
- import org.eclipse.jface.viewers.ArrayContentProvider;
- import org.eclipse.jface.viewers.ColumnLabelProvider;
- import org.eclipse.jface.viewers.ISelectionChangedListener;
- import org.eclipse.jface.viewers.IStructuredSelection;
- import org.eclipse.jface.viewers.OwnerDrawLabelProvider;
- import org.eclipse.jface.viewers.SelectionChangedEvent;
- import org.eclipse.jface.viewers.TableViewer;
- import org.eclipse.jface.viewers.TableViewerColumn;
- import org.eclipse.swt.SWT;
- import org.eclipse.swt.graphics.Image;
- import org.eclipse.swt.graphics.Rectangle;
- import org.eclipse.swt.layout.GridData;
- import org.eclipse.swt.layout.GridLayout;
- import org.eclipse.swt.widgets.Composite;
- import org.eclipse.swt.widgets.Event;
- import org.eclipse.swt.widgets.Label;
- import org.eclipse.swt.widgets.Table;
- import org.eclipse.swt.widgets.TableColumn;
- import org.eclipse.swt.widgets.TableItem;
-
-
- import xyz.veronie.bgg.result.Thing;
- import xyz.veronie.bgg.result.ThingProvider;
- import xyz.veronie.bgg.types.EventConstants;
-
-
- public class BggResultPart {
- private TableViewer viewer;
- private Label statsLabel;
-
- @Inject
- private ThingProvider thingProvider;
-
- @Inject
- private IEventBroker eventBroker;
-
- @PostConstruct
- public void createContents(Composite parent) {
- Composite main = new Composite(parent, SWT.FILL);
- main.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
-
- GridLayout layout = new GridLayout(2, false);
- main.setLayout(layout);
-
- createViewer(main);
-
- statsLabel = new Label(main, SWT.FILL);
- statsLabel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
- statsLabel.setText("0 items");
- }
-
-
- private void createViewer(Composite parent) {
- viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL
- | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER );
- createColumns(parent, viewer);
- final Table table = viewer.getTable();
- table.setHeaderVisible(true);
- table.setLinesVisible(true);
-
- viewer.setContentProvider(new ArrayContentProvider());
-
-
- viewer.setInput(thingProvider.getThings());
-
-
-
-
-
- GridData gridData = new GridData();
- gridData.verticalAlignment = GridData.FILL;
- gridData.grabExcessHorizontalSpace = true;
- gridData.grabExcessVerticalSpace = true;
- gridData.horizontalAlignment = GridData.FILL;
- gridData.horizontalSpan = 2;
- viewer.getControl().setLayoutData(gridData);
-
- viewer.addSelectionChangedListener(new ISelectionChangedListener() {
- @Override
- public void selectionChanged(SelectionChangedEvent event) {
- IStructuredSelection selection = viewer.getStructuredSelection();
- Thing thing = (Thing)selection.getFirstElement();
- eventBroker.send(EventConstants.TOPIC_THING_SELECTION, thing);
- }
- });
- }
-
- public TableViewer getViewer() {
- return viewer;
- }
-
-
-
- private void createColumns(final Composite parent, final TableViewer viewer) {
-
-
- TableViewerColumn col = createTableViewerColumn(Thing.IdHeader, 250, 0);
- col.setLabelProvider(new ColumnLabelProvider() {
- @Override
- public String getText(Object element) {
- Thing t = (Thing) element;
- return t.getField((int)col.getColumn().getData());
- }
- });
-
- TableViewerColumn col2 = createTableViewerColumn(Thing.ThumbHeader, 150, 1);
- col2.setLabelProvider(new ColumnLabelProvider() {
- @Override
- public Image getImage(Object element) {
- Thing t = (Thing) element;
- Image img = t.getThumbnail();
- return img;
- }
-
- @Override
- public String getText(Object element) {
- return "";
- }
-
- });
-
- TableViewerColumn col3 = createTableViewerColumn(Thing.NameHeader, 400, 2);
- col3.setLabelProvider(new ColumnLabelProvider() {
- @Override
- public String getText(Object element) {
- Thing t = (Thing) element;
- return t.getField((int)col3.getColumn().getData());
- }
- });
- }
-
- private TableViewerColumn createTableViewerColumn(String title, int bound, final int colNumber) {
- final TableViewerColumn viewerColumn = new TableViewerColumn(viewer,
- SWT.NONE);
- final TableColumn column = viewerColumn.getColumn();
- column.setText(title);
- column.setWidth(bound);
- column.setAlignment(SWT.LEFT);
- column.setResizable(true);
- column.setMoveable(true);
- column.setData(colNumber);
-
- return viewerColumn;
-
- }
-
-
-
- public void setFocus() {
- viewer.getControl().setFocus();
- }
-
-
- @Inject
- @Optional
- private void subscribeTopicResultChanged
- (@UIEventTopic(EventConstants.TOPIC_RESULT_CHANGED)
- String empty) {
- System.out.println("TOPIC_RESULT_CHANGED");
- List<Thing> things = thingProvider.getThings();
- viewer.setInput(things);
- viewer.refresh(true);
- if(things != null) {
- statsLabel.setText(Integer.toString(things.size()) + " items");
- statsLabel.redraw();
- }
- }
-
-
- }
-
|