]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.document.linking.ui/src/org/simantics/document/linking/wizard/ReportCustomizationPage.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.document.linking.ui / src / org / simantics / document / linking / wizard / ReportCustomizationPage.java
index e30f50a08797e16b1e0958729b3150de7bf6ac49..37f76332f6ad3e7de787f5263b390fee327e2d3e 100644 (file)
-package org.simantics.document.linking.wizard;\r
-\r
-import java.util.Collection;\r
-import java.util.LinkedHashMap;\r
-import java.util.List;\r
-import java.util.Map;\r
-\r
-import org.eclipse.jface.dialogs.InputDialog;\r
-import org.eclipse.jface.layout.GridDataFactory;\r
-import org.eclipse.jface.resource.LocalResourceManager;\r
-import org.eclipse.jface.viewers.IStructuredContentProvider;\r
-import org.eclipse.jface.viewers.LabelProvider;\r
-import org.eclipse.jface.viewers.Viewer;\r
-import org.eclipse.jface.wizard.WizardPage;\r
-import org.eclipse.swt.SWT;\r
-import org.eclipse.swt.events.SelectionAdapter;\r
-import org.eclipse.swt.events.SelectionEvent;\r
-import org.eclipse.swt.layout.GridLayout;\r
-import org.eclipse.swt.widgets.Button;\r
-import org.eclipse.swt.widgets.Composite;\r
-import org.eclipse.swt.widgets.TabFolder;\r
-import org.eclipse.swt.widgets.TabItem;\r
-import org.eclipse.ui.dialogs.ListDialog;\r
-import org.simantics.Simantics;\r
-import org.simantics.db.ReadGraph;\r
-import org.simantics.db.Resource;\r
-import org.simantics.db.common.NamedResource;\r
-import org.simantics.db.common.request.PossibleObjectWithName;\r
-import org.simantics.db.common.request.ReadRequest;\r
-import org.simantics.db.exception.DatabaseException;\r
-import org.simantics.db.request.Read;\r
-import org.simantics.document.linking.report.evaluator.DBUtil;\r
-import org.simantics.document.linking.report.templates.CustomizableContentProvider;\r
-import org.simantics.document.linking.report.templates.ReportWriter;\r
-import org.simantics.document.linking.report.templates.custom.CustomizableContent;\r
-import org.simantics.document.linking.report.templates.custom.EvaluatorCustomizableContent;\r
-import org.simantics.document.linking.report.templates.custom.SCLCustomizableContent;\r
-import org.simantics.layer0.Layer0;\r
-import org.simantics.utils.ui.validators.NotNullValidator;\r
-\r
-\r
-/**\r
- * \r
- * \r
- * @author Marko Luukkainen <marko.luukkainen@vtt.fi>\r
- *\r
- */\r
-public class ReportCustomizationPage extends WizardPage{\r
-       \r
-       ReportWriter<?> reportWriter;\r
-       Resource model;\r
-\r
-       private Map<String,Composite> widgets = new LinkedHashMap<String, Composite>();\r
-       private TabFolder tabFolder;\r
-       private Map<String,TabItem> tabs = new LinkedHashMap<String, TabItem>();\r
-       \r
-       private Button loadButton;\r
-       private Button saveButton;\r
-       private Button resetButton;\r
-       private Resource library;\r
-       \r
-       protected ReportCustomizationPage(String pageName) {\r
-               super(pageName,pageName,null);\r
-       }\r
-\r
-       @Override\r
-       public void createControl(Composite parent) {\r
-               Composite composite = new Composite(parent, SWT.NONE);\r
-               composite.setLayout(new GridLayout(1,false));\r
-               setControl(composite);\r
-               tabFolder = new TabFolder(composite, SWT.NONE);\r
-               tabFolder.setLayout(new GridLayout());\r
-               GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, true).applyTo(tabFolder);\r
-               Composite buttonComposite = new Composite(composite, SWT.NONE);\r
-               GridDataFactory.fillDefaults().align(SWT.FILL, SWT.BOTTOM).grab(true, false).applyTo(buttonComposite);\r
-               buttonComposite.setLayout(new GridLayout(3, true));\r
-               loadButton = new Button(buttonComposite, SWT.PUSH);\r
-               saveButton = new Button(buttonComposite, SWT.PUSH);\r
-               resetButton = new Button(buttonComposite, SWT.PUSH);\r
-               GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(loadButton);\r
-               GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(saveButton);\r
-               GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(resetButton);\r
-               loadButton.setText("Load");\r
-               saveButton.setText("Save");\r
-               resetButton.setText("Defaults");\r
-               \r
-               loadButton.addSelectionListener(new SelectionAdapter() {\r
-                       @Override\r
-                       public void widgetSelected(SelectionEvent e) {\r
-                               load();\r
-                       }\r
-                       \r
-               });\r
-               saveButton.addSelectionListener(new SelectionAdapter() {\r
-                       public void widgetSelected(SelectionEvent e) {\r
-                               save();\r
-                       };\r
-               });\r
-               resetButton.addSelectionListener(new SelectionAdapter() {\r
-                       public void widgetSelected(SelectionEvent e) {\r
-                               reset();\r
-                       };\r
-               });\r
-               updateContent();\r
-       }\r
-       \r
-       public void setReportWriter(ReportWriter<?> reportWriter) {\r
-               this.reportWriter = reportWriter;\r
-               updateContentProviders();\r
-               updateContent();\r
-       }\r
-       \r
-       public void setModel(final Resource model) {\r
-               this.model = model;\r
-               \r
-               \r
-               try {\r
-                       // TODO : this code retrieves a proper location for storing the template configurations in a model. \r
-                       //        this should be changed so that model resource somehow tells where to store the configurations.\r
-                       // Note: in other models, the location of templates is the model resource itself.\r
-                       this.library = Simantics.getSession().syncRequest(new Read<Resource>() {\r
-                               @Override\r
-                               public Resource perform(ReadGraph graph) throws DatabaseException {\r
-                                       Layer0 l0 = Layer0.getInstance(graph);\r
-                                       Resource lib =  graph.syncRequest(new PossibleObjectWithName(model, l0.ConsistsOf,"Library"));\r
-                                       if (lib != null)\r
-                                               return lib;\r
-                                       \r
-                                       return model;\r
-                               }\r
-                       });\r
-               } catch (DatabaseException e) {\r
-                       this.library = model;\r
-               }\r
-       }\r
-       \r
-       private void updateContentProviders() {\r
-               if (reportWriter instanceof CustomizableContentProvider) {\r
-                       LocalResourceManager manager = ((ReportWizard)getWizard()).manager;\r
-                       CustomizableContentProvider provider = (CustomizableContentProvider)reportWriter;\r
-                       Collection<String> ids = provider.getContentIds();\r
-                       for (String id : tabs.keySet()) {\r
-                               if (!ids.contains(id)) {\r
-                                       tabs.remove(id).dispose();\r
-                                       Composite c = widgets.get(id);\r
-                                       if (c != null && !c.isDisposed())\r
-                                               c.dispose();\r
-                               }\r
-                       }\r
-                       for (String id : ids) {\r
-                               CustomizableContent content = provider.getContent(id);\r
-                               if (content instanceof EvaluatorCustomizableContent) {\r
-                                       TabItem item = tabs.get(id);\r
-                                       if (item == null) {\r
-                                               item = new TabItem(tabFolder, SWT.NONE);\r
-                                               tabs.put(id, item);\r
-                                       }\r
-                                       item.setText(content.getCustomizationDescription());\r
-                                       EvaluatorConfigurationWidget w = new EvaluatorConfigurationWidget(tabFolder,manager, SWT.NONE);\r
-                                       w.setInput((EvaluatorCustomizableContent)content);\r
-                                       GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, true).applyTo(w);\r
-                                       Composite c = widgets.put(id, w);\r
-                                       if (c != null)\r
-                                               c.dispose();\r
-                                       item.setControl(w);\r
-                               } else if (content instanceof SCLCustomizableContent) {\r
-                                       \r
-                               }\r
-                       }\r
-               }\r
-       }\r
-\r
-       \r
-       @Override\r
-       public void setVisible(boolean visible) {\r
-               super.setVisible(visible);\r
-               updateContent();\r
-       }\r
-       \r
-       \r
-       private void updateContent() {\r
-               for (Composite c : widgets.values()) {\r
-                       if (c instanceof EvaluatorConfigurationWidget)\r
-                               ((EvaluatorConfigurationWidget)c).updateContent();\r
-               }\r
-               ((Composite)getControl()).layout(true);\r
-       }\r
-       \r
-       private void load() {\r
-               try {\r
-                       List<NamedResource> templates = DBUtil.getTemplates(library);\r
-                       \r
-                       ListDialog dialog = new ListDialog(getShell());\r
-                       dialog.setContentProvider(new IStructuredContentProvider() {\r
-                               \r
-                               @Override\r
-                               public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {\r
-                                       \r
-                               }\r
-                               \r
-                               @Override\r
-                               public void dispose() {\r
-                                       \r
-                               }\r
-                               \r
-                               @SuppressWarnings("unchecked")\r
-                               @Override\r
-                               public Object[] getElements(Object inputElement) {\r
-                                       List<NamedResource> list = (List<NamedResource>)inputElement;\r
-                                       return list.toArray();\r
-                               }\r
-                       });\r
-                       dialog.setLabelProvider(new LabelProvider());\r
-                       dialog.setInput(templates);\r
-                       if (dialog.open() != ListDialog.OK)\r
-                               return;\r
-                       Object result[] = dialog.getResult();\r
-                       if (result == null || result.length != 1)\r
-                               return;\r
-                       final NamedResource selectedTemplate = (NamedResource)result[0];\r
-                       Simantics.getSession().syncRequest(new ReadRequest() {\r
-                               \r
-                               @Override\r
-                               public void run(ReadGraph graph) throws DatabaseException {\r
-                                       DBUtil.load(graph, selectedTemplate.getResource(), (CustomizableContentProvider)reportWriter);\r
-                                       \r
-                               }\r
-                       });\r
-                       updateContentProviders();\r
-                       updateContent();\r
-                       \r
-               } catch (DatabaseException e) {\r
-                       // TODO Auto-generated catch block\r
-                       e.printStackTrace();\r
-               }\r
-               \r
-       }\r
-       \r
-       private void save() {\r
-               try {\r
-                       \r
-                       InputDialog dialog = new InputDialog(getShell(), "Save report customization", "Give template name", "Name", new NotNullValidator("Name cannot be empty"));\r
-                       if (dialog.open() != InputDialog.OK)\r
-                               return;\r
-                       final String name = dialog.getValue();\r
-                       if (name == null || name.length() == 0)\r
-                               return;\r
-                       DBUtil.save(library, name, (CustomizableContentProvider)reportWriter);\r
-               } catch (DatabaseException e) {\r
-                       // TODO Auto-generated catch block\r
-                       e.printStackTrace();\r
-               }\r
-                       \r
-       }\r
-       \r
-       private void reset() {\r
-               if (reportWriter instanceof CustomizableContentProvider) {\r
-                       CustomizableContentProvider ccp = (CustomizableContentProvider)reportWriter;\r
-                       for (String id : ccp.getContentIds()) {\r
-                               ccp.setDefaultContent(id);\r
-                       }\r
-                       updateContentProviders();\r
-                       updateContent();\r
-               }\r
-       }\r
-       \r
-       \r
-\r
-}\r
+package org.simantics.document.linking.wizard;
+
+import java.util.Collection;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.jface.dialogs.InputDialog;
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.resource.LocalResourceManager;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.TabFolder;
+import org.eclipse.swt.widgets.TabItem;
+import org.eclipse.ui.dialogs.ListDialog;
+import org.simantics.Simantics;
+import org.simantics.db.ReadGraph;
+import org.simantics.db.Resource;
+import org.simantics.db.common.NamedResource;
+import org.simantics.db.common.request.PossibleObjectWithName;
+import org.simantics.db.common.request.ReadRequest;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.db.request.Read;
+import org.simantics.document.linking.report.evaluator.DBUtil;
+import org.simantics.document.linking.report.templates.CustomizableContentProvider;
+import org.simantics.document.linking.report.templates.ReportWriter;
+import org.simantics.document.linking.report.templates.custom.CustomizableContent;
+import org.simantics.document.linking.report.templates.custom.EvaluatorCustomizableContent;
+import org.simantics.document.linking.report.templates.custom.SCLCustomizableContent;
+import org.simantics.layer0.Layer0;
+import org.simantics.utils.ui.validators.NotNullValidator;
+
+
+/**
+ * 
+ * 
+ * @author Marko Luukkainen <marko.luukkainen@vtt.fi>
+ *
+ */
+public class ReportCustomizationPage extends WizardPage{
+       
+       ReportWriter<?> reportWriter;
+       Resource model;
+
+       private Map<String,Composite> widgets = new LinkedHashMap<String, Composite>();
+       private TabFolder tabFolder;
+       private Map<String,TabItem> tabs = new LinkedHashMap<String, TabItem>();
+       
+       private Button loadButton;
+       private Button saveButton;
+       private Button resetButton;
+       private Resource library;
+       
+       protected ReportCustomizationPage(String pageName) {
+               super(pageName,pageName,null);
+       }
+
+       @Override
+       public void createControl(Composite parent) {
+               Composite composite = new Composite(parent, SWT.NONE);
+               composite.setLayout(new GridLayout(1,false));
+               setControl(composite);
+               tabFolder = new TabFolder(composite, SWT.NONE);
+               tabFolder.setLayout(new GridLayout());
+               GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, true).applyTo(tabFolder);
+               Composite buttonComposite = new Composite(composite, SWT.NONE);
+               GridDataFactory.fillDefaults().align(SWT.FILL, SWT.BOTTOM).grab(true, false).applyTo(buttonComposite);
+               buttonComposite.setLayout(new GridLayout(3, true));
+               loadButton = new Button(buttonComposite, SWT.PUSH);
+               saveButton = new Button(buttonComposite, SWT.PUSH);
+               resetButton = new Button(buttonComposite, SWT.PUSH);
+               GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(loadButton);
+               GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(saveButton);
+               GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).applyTo(resetButton);
+               loadButton.setText("Load");
+               saveButton.setText("Save");
+               resetButton.setText("Defaults");
+               
+               loadButton.addSelectionListener(new SelectionAdapter() {
+                       @Override
+                       public void widgetSelected(SelectionEvent e) {
+                               load();
+                       }
+                       
+               });
+               saveButton.addSelectionListener(new SelectionAdapter() {
+                       public void widgetSelected(SelectionEvent e) {
+                               save();
+                       };
+               });
+               resetButton.addSelectionListener(new SelectionAdapter() {
+                       public void widgetSelected(SelectionEvent e) {
+                               reset();
+                       };
+               });
+               updateContent();
+       }
+       
+       public void setReportWriter(ReportWriter<?> reportWriter) {
+               this.reportWriter = reportWriter;
+               updateContentProviders();
+               updateContent();
+       }
+       
+       public void setModel(final Resource model) {
+               this.model = model;
+               
+               
+               try {
+                       // TODO : this code retrieves a proper location for storing the template configurations in a model. 
+                       //        this should be changed so that model resource somehow tells where to store the configurations.
+                       // Note: in other models, the location of templates is the model resource itself.
+                       this.library = Simantics.getSession().syncRequest(new Read<Resource>() {
+                               @Override
+                               public Resource perform(ReadGraph graph) throws DatabaseException {
+                                       Layer0 l0 = Layer0.getInstance(graph);
+                                       Resource lib =  graph.syncRequest(new PossibleObjectWithName(model, l0.ConsistsOf,"Library"));
+                                       if (lib != null)
+                                               return lib;
+                                       
+                                       return model;
+                               }
+                       });
+               } catch (DatabaseException e) {
+                       this.library = model;
+               }
+       }
+       
+       private void updateContentProviders() {
+               if (reportWriter instanceof CustomizableContentProvider) {
+                       LocalResourceManager manager = ((ReportWizard)getWizard()).manager;
+                       CustomizableContentProvider provider = (CustomizableContentProvider)reportWriter;
+                       Collection<String> ids = provider.getContentIds();
+                       for (String id : tabs.keySet()) {
+                               if (!ids.contains(id)) {
+                                       tabs.remove(id).dispose();
+                                       Composite c = widgets.get(id);
+                                       if (c != null && !c.isDisposed())
+                                               c.dispose();
+                               }
+                       }
+                       for (String id : ids) {
+                               CustomizableContent content = provider.getContent(id);
+                               if (content instanceof EvaluatorCustomizableContent) {
+                                       TabItem item = tabs.get(id);
+                                       if (item == null) {
+                                               item = new TabItem(tabFolder, SWT.NONE);
+                                               tabs.put(id, item);
+                                       }
+                                       item.setText(content.getCustomizationDescription());
+                                       EvaluatorConfigurationWidget w = new EvaluatorConfigurationWidget(tabFolder,manager, SWT.NONE);
+                                       w.setInput((EvaluatorCustomizableContent)content);
+                                       GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, true).applyTo(w);
+                                       Composite c = widgets.put(id, w);
+                                       if (c != null)
+                                               c.dispose();
+                                       item.setControl(w);
+                               } else if (content instanceof SCLCustomizableContent) {
+                                       
+                               }
+                       }
+               }
+       }
+
+       
+       @Override
+       public void setVisible(boolean visible) {
+               super.setVisible(visible);
+               updateContent();
+       }
+       
+       
+       private void updateContent() {
+               for (Composite c : widgets.values()) {
+                       if (c instanceof EvaluatorConfigurationWidget)
+                               ((EvaluatorConfigurationWidget)c).updateContent();
+               }
+               ((Composite)getControl()).layout(true);
+       }
+       
+       private void load() {
+               try {
+                       List<NamedResource> templates = DBUtil.getTemplates(library);
+                       
+                       ListDialog dialog = new ListDialog(getShell());
+                       dialog.setContentProvider(new IStructuredContentProvider() {
+                               
+                               @Override
+                               public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+                                       
+                               }
+                               
+                               @Override
+                               public void dispose() {
+                                       
+                               }
+                               
+                               @SuppressWarnings("unchecked")
+                               @Override
+                               public Object[] getElements(Object inputElement) {
+                                       List<NamedResource> list = (List<NamedResource>)inputElement;
+                                       return list.toArray();
+                               }
+                       });
+                       dialog.setLabelProvider(new LabelProvider());
+                       dialog.setInput(templates);
+                       if (dialog.open() != ListDialog.OK)
+                               return;
+                       Object result[] = dialog.getResult();
+                       if (result == null || result.length != 1)
+                               return;
+                       final NamedResource selectedTemplate = (NamedResource)result[0];
+                       Simantics.getSession().syncRequest(new ReadRequest() {
+                               
+                               @Override
+                               public void run(ReadGraph graph) throws DatabaseException {
+                                       DBUtil.load(graph, selectedTemplate.getResource(), (CustomizableContentProvider)reportWriter);
+                                       
+                               }
+                       });
+                       updateContentProviders();
+                       updateContent();
+                       
+               } catch (DatabaseException e) {
+                       // TODO Auto-generated catch block
+                       e.printStackTrace();
+               }
+               
+       }
+       
+       private void save() {
+               try {
+                       
+                       InputDialog dialog = new InputDialog(getShell(), "Save report customization", "Give template name", "Name", new NotNullValidator("Name cannot be empty"));
+                       if (dialog.open() != InputDialog.OK)
+                               return;
+                       final String name = dialog.getValue();
+                       if (name == null || name.length() == 0)
+                               return;
+                       DBUtil.save(library, name, (CustomizableContentProvider)reportWriter);
+               } catch (DatabaseException e) {
+                       // TODO Auto-generated catch block
+                       e.printStackTrace();
+               }
+                       
+       }
+       
+       private void reset() {
+               if (reportWriter instanceof CustomizableContentProvider) {
+                       CustomizableContentProvider ccp = (CustomizableContentProvider)reportWriter;
+                       for (String id : ccp.getContentIds()) {
+                               ccp.setDefaultContent(id);
+                       }
+                       updateContentProviders();
+                       updateContent();
+               }
+       }
+       
+       
+
+}