-package org.simantics.scl.ui.issues;\r
-\r
-import org.eclipse.jface.action.Action;\r
-import org.eclipse.jface.action.IAction;\r
-import org.eclipse.jface.resource.ImageRegistry;\r
-import org.eclipse.jface.viewers.ColumnLabelProvider;\r
-import org.eclipse.jface.viewers.ColumnViewerToolTipSupport;\r
-import org.eclipse.jface.viewers.DoubleClickEvent;\r
-import org.eclipse.jface.viewers.IDoubleClickListener;\r
-import org.eclipse.jface.viewers.IStructuredSelection;\r
-import org.eclipse.jface.viewers.TableViewer;\r
-import org.eclipse.jface.viewers.TableViewerColumn;\r
-import org.eclipse.swt.SWT;\r
-import org.eclipse.swt.events.ControlAdapter;\r
-import org.eclipse.swt.events.ControlEvent;\r
-import org.eclipse.swt.graphics.Image;\r
-import org.eclipse.swt.graphics.Point;\r
-import org.eclipse.swt.graphics.Rectangle;\r
-import org.eclipse.swt.layout.FillLayout;\r
-import org.eclipse.swt.widgets.Composite;\r
-import org.eclipse.swt.widgets.ScrollBar;\r
-import org.eclipse.swt.widgets.Table;\r
-import org.eclipse.ui.IMemento;\r
-import org.eclipse.ui.IViewSite;\r
-import org.eclipse.ui.PartInitException;\r
-import org.eclipse.ui.part.ViewPart;\r
-import org.simantics.scl.osgi.SCLOsgi;\r
-import org.simantics.scl.ui.Activator;\r
-import org.simantics.scl.ui.editor2.OpenSCLDefinition;\r
-\r
-public class SCLIssuesView extends ViewPart {\r
-\r
- private static final int COLUMN1_DEFAULT_WIDTH = 300;\r
- private static final int COLUMN2_MIN_WIDTH = 100;\r
- \r
- Composite parent;\r
- TableViewer tableViewer;\r
- TableViewerColumn column1;\r
- TableViewerColumn column2;\r
-\r
- ImageRegistry imageRegistry;\r
- \r
- public SCLIssuesView() {\r
- super();\r
- imageRegistry = Activator.getInstance().getImageRegistry();\r
- }\r
- \r
- @Override\r
- public void init(IViewSite site, IMemento memento)\r
- throws PartInitException {\r
- super.init(site, memento);\r
- IAction action = new Action("Refresh") {\r
- @Override\r
- public void run() {\r
- SCLOsgi.MODULE_REPOSITORY.getSourceRepository().checkUpdates();\r
- }\r
- };\r
- action.setImageDescriptor(imageRegistry.getDescriptor("arrow_refresh"));\r
- site.getActionBars().getToolBarManager().add(action);\r
- }\r
- \r
- @Override\r
- public void createPartControl(Composite parent) {\r
- this.parent = parent;\r
- parent.setLayout(new FillLayout());\r
- tableViewer = new TableViewer(parent,\r
- SWT.FULL_SELECTION | SWT.SINGLE | SWT.V_SCROLL | SWT.H_SCROLL);\r
- ColumnViewerToolTipSupport.enableFor(tableViewer);\r
- tableViewer.setContentProvider(new SCLIssuesContentProvider());\r
-\r
- Table table = tableViewer.getTable();\r
- table.setHeaderVisible(true);\r
- table.setLinesVisible(true);\r
-\r
- column1 = new TableViewerColumn(tableViewer, SWT.NONE);\r
- column1.getColumn().setText("Module");\r
- column1.getColumn().setWidth(COLUMN1_DEFAULT_WIDTH);\r
- column1.getColumn().setResizable(true);\r
- column1.setLabelProvider(new ColumnLabelProvider() {\r
- @Override\r
- public String getText(Object element) {\r
- SCLIssuesTableEntry entry = (SCLIssuesTableEntry)element;\r
- return entry.moduleName;\r
- }\r
- @Override\r
- public Image getImage(Object element) {\r
- return imageRegistry.get("error");\r
- }\r
- });\r
- \r
- column2 = new TableViewerColumn(tableViewer, SWT.NONE);\r
- column2.getColumn().setText("Description");\r
- column2.getColumn().setResizable(false);\r
- column2.setLabelProvider(new ColumnLabelProvider() {\r
- @Override\r
- public String getText(Object element) {\r
- SCLIssuesTableEntry entry = (SCLIssuesTableEntry)element;\r
- String description = entry.error.description; \r
- int p = description.indexOf('\n');\r
- if(p == -1)\r
- return description;\r
- else\r
- return description.substring(0, p);\r
- }\r
- @Override\r
- public String getToolTipText(Object element) {\r
- SCLIssuesTableEntry entry = (SCLIssuesTableEntry)element;\r
- return entry.error.description;\r
- }\r
- @Override\r
- public int getToolTipTimeDisplayed(Object object) {\r
- return 15000;\r
- }\r
- @Override\r
- public int getToolTipDisplayDelayTime(Object object) {\r
- return 500;\r
- }\r
- @Override\r
- public Point getToolTipShift(Object object) {\r
- return new Point(0, 0);\r
- }\r
- });\r
- \r
- ControlAdapter resizeListener = new ControlAdapter() {\r
- @Override\r
- public void controlResized(ControlEvent e) {\r
- resizeColumns();\r
- }\r
- };\r
- parent.addControlListener(resizeListener);\r
- column1.getColumn().addControlListener(resizeListener);\r
-\r
- tableViewer.setInput(SCLOsgi.MODULE_REPOSITORY);\r
- tableViewer.addDoubleClickListener(new IDoubleClickListener() {\r
- @Override\r
- public void doubleClick(DoubleClickEvent event) {\r
- IStructuredSelection selection = (IStructuredSelection)event.getSelection();\r
- SCLIssuesTableEntry entry = (SCLIssuesTableEntry)selection.getFirstElement();\r
- OpenSCLDefinition.openDefinition(entry.moduleName, entry.error.location);\r
- }\r
- });\r
- }\r
-\r
- private void resizeColumns() {\r
- Table table = tableViewer.getTable();\r
- Rectangle area = parent.getClientArea();\r
- Point size = table.computeSize(SWT.DEFAULT, SWT.DEFAULT);\r
- ScrollBar vBar = table.getVerticalBar();\r
- int width = area.width;\r
- if (size.y > area.height + table.getHeaderHeight()) {\r
- Point vBarSize = vBar.getSize();\r
- width -= vBarSize.x;\r
- }\r
- Point oldSize = table.getSize();\r
- if (oldSize.x > area.width) {\r
- column2.getColumn().setWidth(Math.max(COLUMN2_MIN_WIDTH, width - column1.getColumn().getWidth()));\r
- table.setSize(area.width, area.height);\r
- } else {\r
- table.setSize(area.width, area.height);\r
- column2.getColumn().setWidth(Math.max(COLUMN2_MIN_WIDTH, width - column1.getColumn().getWidth()));\r
- }\r
- }\r
-\r
- @Override\r
- public void setFocus() {\r
- tableViewer.getControl().setFocus();\r
- }\r
-\r
-}\r
+package org.simantics.scl.ui.issues;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.resource.ImageRegistry;
+import org.eclipse.jface.viewers.ColumnLabelProvider;
+import org.eclipse.jface.viewers.ColumnViewerToolTipSupport;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TableViewerColumn;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ControlAdapter;
+import org.eclipse.swt.events.ControlEvent;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.ScrollBar;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.ui.IMemento;
+import org.eclipse.ui.IViewSite;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.part.ViewPart;
+import org.simantics.scl.osgi.SCLOsgi;
+import org.simantics.scl.ui.Activator;
+import org.simantics.scl.ui.editor2.OpenSCLDefinition;
+
+public class SCLIssuesView extends ViewPart {
+
+ private static final int COLUMN1_DEFAULT_WIDTH = 300;
+ private static final int COLUMN2_MIN_WIDTH = 100;
+
+ Composite parent;
+ TableViewer tableViewer;
+ TableViewerColumn column1;
+ TableViewerColumn column2;
+
+ ImageRegistry imageRegistry;
+
+ SCLIssuesContentProvider issuesContentProvider = new SCLIssuesContentProvider();
+
+ public SCLIssuesView() {
+ super();
+ imageRegistry = Activator.getInstance().getImageRegistry();
+ }
+
+ @Override
+ public void init(IViewSite site, IMemento memento)
+ throws PartInitException {
+ super.init(site, memento);
+ IAction action = new Action("Refresh") {
+ @Override
+ public void run() {
+ SCLOsgi.MODULE_REPOSITORY.getSourceRepository().checkUpdates();
+ }
+ };
+ action.setImageDescriptor(imageRegistry.getDescriptor("arrow_refresh"));
+ site.getActionBars().getToolBarManager().add(action);
+ }
+
+ @Override
+ public void createPartControl(Composite parent) {
+ this.parent = parent;
+ parent.setLayout(new FillLayout());
+ tableViewer = new TableViewer(parent,
+ SWT.FULL_SELECTION | SWT.SINGLE | SWT.V_SCROLL | SWT.H_SCROLL);
+ ColumnViewerToolTipSupport.enableFor(tableViewer);
+ tableViewer.setContentProvider(issuesContentProvider);
+
+ Table table = tableViewer.getTable();
+ table.setHeaderVisible(true);
+ table.setLinesVisible(true);
+
+ column1 = new TableViewerColumn(tableViewer, SWT.NONE);
+ column1.getColumn().setText("Module");
+ column1.getColumn().setWidth(COLUMN1_DEFAULT_WIDTH);
+ column1.getColumn().setResizable(true);
+ column1.setLabelProvider(new ColumnLabelProvider() {
+ @Override
+ public String getText(Object element) {
+ SCLIssuesTableEntry entry = (SCLIssuesTableEntry)element;
+ return entry.moduleName;
+ }
+ @Override
+ public Image getImage(Object element) {
+ return imageRegistry.get("error");
+ }
+ });
+
+ column2 = new TableViewerColumn(tableViewer, SWT.NONE);
+ column2.getColumn().setText("Description");
+ column2.getColumn().setResizable(false);
+ column2.setLabelProvider(new ColumnLabelProvider() {
+ @Override
+ public String getText(Object element) {
+ SCLIssuesTableEntry entry = (SCLIssuesTableEntry)element;
+ String description = entry.error.description;
+ int p = description.indexOf('\n');
+ if(p == -1)
+ return description;
+ else
+ return description.substring(0, p);
+ }
+ @Override
+ public String getToolTipText(Object element) {
+ SCLIssuesTableEntry entry = (SCLIssuesTableEntry)element;
+ return entry.error.description;
+ }
+ @Override
+ public int getToolTipTimeDisplayed(Object object) {
+ return 15000;
+ }
+ @Override
+ public int getToolTipDisplayDelayTime(Object object) {
+ return 500;
+ }
+ @Override
+ public Point getToolTipShift(Object object) {
+ return new Point(0, 0);
+ }
+ });
+
+ ControlAdapter resizeListener = new ControlAdapter() {
+ @Override
+ public void controlResized(ControlEvent e) {
+ resizeColumns();
+ }
+ };
+ parent.addControlListener(resizeListener);
+ column1.getColumn().addControlListener(resizeListener);
+
+ tableViewer.setInput(SCLOsgi.MODULE_REPOSITORY);
+ tableViewer.addDoubleClickListener(new IDoubleClickListener() {
+ @Override
+ public void doubleClick(DoubleClickEvent event) {
+ IStructuredSelection selection = (IStructuredSelection)event.getSelection();
+ SCLIssuesTableEntry entry = (SCLIssuesTableEntry)selection.getFirstElement();
+ OpenSCLDefinition.openDefinition(entry.moduleName, entry.error.location);
+ }
+ });
+ }
+
+ private void resizeColumns() {
+ Table table = tableViewer.getTable();
+ Rectangle area = parent.getClientArea();
+ Point size = table.computeSize(SWT.DEFAULT, SWT.DEFAULT);
+ ScrollBar vBar = table.getVerticalBar();
+ int width = area.width;
+ if (size.y > area.height + table.getHeaderHeight()) {
+ Point vBarSize = vBar.getSize();
+ width -= vBarSize.x;
+ }
+ Point oldSize = table.getSize();
+ if (oldSize.x > area.width) {
+ column2.getColumn().setWidth(Math.max(COLUMN2_MIN_WIDTH, width - column1.getColumn().getWidth()));
+ table.setSize(area.width, area.height);
+ } else {
+ table.setSize(area.width, area.height);
+ column2.getColumn().setWidth(Math.max(COLUMN2_MIN_WIDTH, width - column1.getColumn().getWidth()));
+ }
+ }
+
+ @Override
+ public void setFocus() {
+ tableViewer.getControl().setFocus();
+ }
+
+ @Override
+ public void dispose() {
+ super.dispose();
+ issuesContentProvider.dispose();
+ }
+
+}