]> gerrit.simantics Code Review - simantics/district.git/blob - org.simantics.district.region.ui/src/org/simantics/district/region/ui/DiagramRegionsTableUI.java
Elimination of compiler warnings.
[simantics/district.git] / org.simantics.district.region.ui / src / org / simantics / district / region / ui / DiagramRegionsTableUI.java
1 package org.simantics.district.region.ui;
2
3 import java.awt.geom.Rectangle2D;
4 import java.text.DecimalFormat;
5 import java.util.Collection;
6 import java.util.Set;
7
8 import org.eclipse.e4.ui.workbench.modeling.ESelectionService;
9 import org.eclipse.jface.viewers.ColumnLabelProvider;
10 import org.eclipse.jface.viewers.ColumnViewerToolTipSupport;
11 import org.eclipse.jface.viewers.DoubleClickEvent;
12 import org.eclipse.jface.viewers.IDoubleClickListener;
13 import org.eclipse.jface.viewers.ISelectionChangedListener;
14 import org.eclipse.jface.viewers.ITreeContentProvider;
15 import org.eclipse.jface.viewers.SelectionChangedEvent;
16 import org.eclipse.jface.viewers.TreeSelection;
17 import org.eclipse.jface.viewers.TreeViewer;
18 import org.eclipse.jface.viewers.TreeViewerColumn;
19 import org.eclipse.jface.viewers.Viewer;
20 import org.eclipse.swt.SWT;
21 import org.eclipse.swt.graphics.Image;
22 import org.eclipse.swt.layout.FillLayout;
23 import org.eclipse.swt.widgets.Composite;
24 import org.eclipse.swt.widgets.Tree;
25 import org.simantics.Simantics;
26 import org.simantics.db.ReadGraph;
27 import org.simantics.db.common.procedure.adapter.SyncListenerAdapter;
28 import org.simantics.db.exception.DatabaseException;
29 import org.simantics.district.region.DiagramRegions;
30 import org.simantics.district.region.DiagramRegions.DiagramRegion;
31 import org.simantics.district.region.ui.handlers.ZoomToRegionHandler;
32 import org.slf4j.Logger;
33 import org.slf4j.LoggerFactory;
34
35 public class DiagramRegionsTableUI extends Composite {
36
37     private static final Logger LOGGER = LoggerFactory.getLogger(DiagramRegionsTableUI.class);
38     
39     private TreeViewer viewer;
40     private TreeViewerColumn column1;
41     private TreeViewerColumn column2;
42
43     private ESelectionService selectionService;
44
45     public DiagramRegionsTableUI(ESelectionService selectionService, Composite parent, int style) {
46         super(parent, style);
47         this.selectionService = selectionService;
48         parent.setLayout(new FillLayout());
49 //        GridDataFactory.fillDefaults().grab(true, true).applyTo(this);
50 //        GridLayoutFactory.fillDefaults().numColumns(1).applyTo(this);
51         this.setLayout(new FillLayout());
52         Simantics.getSession().asyncRequest(new DiagramRegions.DiagramRegionsRequest(), new SyncListenerAdapter<Collection<DiagramRegion>>() {
53
54             public void execute(ReadGraph graph, Collection<DiagramRegion> result) {
55                 parent.getDisplay().asyncExec(() -> {
56                     viewer.setInput(result);
57                 });
58             }
59             
60             @Override
61             public void exception(ReadGraph graph, Throwable t) throws DatabaseException {
62                 LOGGER.error("Could not listen", t);
63             }
64
65             @Override
66             public boolean isDisposed() {
67                 return DiagramRegionsTableUI.this.isDisposed();
68             }
69         });
70         
71         viewer = new TreeViewer(this, SWT.FULL_SELECTION);
72         viewer.addSelectionChangedListener(new ISelectionChangedListener() {
73             
74             @Override
75             public void selectionChanged(SelectionChangedEvent event) {
76                 DiagramRegionsTableUI.this.selectionService.setSelection(event.getSelection());
77             }
78         });
79         viewer.addDoubleClickListener(new IDoubleClickListener() {
80             
81             @Override
82             public void doubleClick(DoubleClickEvent event) {
83                 TreeSelection selection = (TreeSelection) viewer.getSelection();
84                 DiagramRegion region = (DiagramRegion) selection.getFirstElement();
85                 ZoomToRegionHandler.zoomTo(viewer.getControl(), getDisplay(), region.getResource());
86             }
87         });
88         viewer.setContentProvider(new ITreeContentProvider() {
89             
90             @Override
91             public boolean hasChildren(Object element) {
92                 return false;
93             }
94             
95             @Override
96             public Object getParent(Object element) {
97                 return null;
98             }
99             
100             @Override
101             public Object[] getElements(Object inputElement) {
102                 if (inputElement == null && (!(inputElement instanceof Collection)))
103                     return new Object[0];
104                 @SuppressWarnings("unchecked")
105                 Set<DiagramRegion> set = (Set<DiagramRegion>) inputElement;
106                 return set.toArray();
107             }
108             
109             @Override
110             public Object[] getChildren(Object parentElement) {
111                 return null;
112             }
113             
114             @Override
115             public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
116                 ITreeContentProvider.super.inputChanged(viewer, oldInput, newInput);
117             }
118         });
119
120         ColumnViewerToolTipSupport.enableFor(viewer);
121
122         Tree table = viewer.getTree();
123         table.setHeaderVisible(true);
124         table.setLinesVisible(true);
125
126         column1 = new TreeViewerColumn(viewer, SWT.NONE);
127         column1.getColumn().setText("Region");
128         column1.getColumn().setWidth(200);
129         column1.getColumn().setResizable(true);
130         column1.setLabelProvider(new ColumnLabelProvider() {
131             @Override
132             public String getText(Object element) {
133                 DiagramRegion region = (DiagramRegion) element;
134                 return region.getLabel();
135             }
136             @Override
137             public Image getImage(Object element) {
138                 return null;
139             }
140         });
141         
142         column2 = new TreeViewerColumn(viewer, SWT.NONE);
143         column2.getColumn().setText("Coordinates");
144         column2.getColumn().setWidth(200);
145         column2.getColumn().setResizable(true);
146         column2.setLabelProvider(new ColumnLabelProvider() {
147             @Override
148             public String getText(Object element) {
149                 DiagramRegion region = (DiagramRegion) element;
150                 Rectangle2D rect = region.getShape().getBounds2D();
151                 DecimalFormat df = new DecimalFormat("0.00");
152                 String x = df.format(rect.getX());
153                 String y = df.format(rect.getY());
154                 String width = df.format(rect.getWidth());
155                 String height = df.format(rect.getHeight());
156                 return "[x=" + x + ", y=" + y + ", width=" + width + ", height=" + height + "]";
157             }
158             @Override
159             public Image getImage(Object element) {
160                 return null;
161             }
162         });
163
164     }
165
166     public Tree getTree() {
167         return viewer.getTree();
168     }
169
170 }