-package org.simantics.document.linking.wizard;\r
-\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-\r
-import org.eclipse.jface.layout.GridDataFactory;\r
-import org.eclipse.jface.wizard.WizardPage;\r
-import org.eclipse.swt.SWT;\r
-import org.eclipse.swt.custom.CCombo;\r
-import org.eclipse.swt.events.SelectionAdapter;\r
-import org.eclipse.swt.events.SelectionEvent;\r
-import org.eclipse.swt.events.SelectionListener;\r
-import org.eclipse.swt.layout.FillLayout;\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.Display;\r
-import org.eclipse.swt.widgets.FileDialog;\r
-import org.eclipse.swt.widgets.Group;\r
-import org.eclipse.swt.widgets.Label;\r
-import org.eclipse.swt.widgets.Text;\r
-import org.simantics.db.ReadGraph;\r
-import org.simantics.db.Resource;\r
-import org.simantics.db.common.request.ReadRequest;\r
-import org.simantics.db.exception.DatabaseException;\r
-import org.simantics.document.linking.report.templates.CompleteStructureWriter;\r
-import org.simantics.document.linking.report.templates.DiagramStructureWithDependenciesWriter;\r
-import org.simantics.document.linking.report.templates.DiagramStructureWriter;\r
-import org.simantics.document.linking.report.templates.DocumentStructureWriter;\r
-import org.simantics.document.linking.report.templates.ModelDocumentWriter;\r
-import org.simantics.document.linking.report.templates.ReferredDocumentWriter;\r
-import org.simantics.document.linking.report.templates.ReportWriter;\r
-import org.simantics.document.linking.views.ModelRead;\r
-import org.simantics.document.linking.views.ModelToComboListener;\r
-import org.simantics.ui.SimanticsUI;\r
-\r
-\r
-/**\r
- * Wizard page for selecting report type and file.\r
- * \r
- * @author Marko Luukkainen <marko.luukkainen@vtt.fi>\r
- *\r
- */\r
-public class ReportSelectionPage extends WizardPage{\r
- \r
- protected ReportSelectionPage(String pageName) {\r
- super(pageName,pageName,null);\r
- setPageComplete(false);\r
- }\r
-\r
- CCombo modelCombo;\r
- Text filenameText;\r
- Button browseButton;\r
- \r
- ModelToComboListener modelToComboListener;\r
- \r
- List<Button> reportSelectionButtons = new ArrayList<Button>();\r
- List<ReportWriter<?>> reportWriters = new ArrayList<ReportWriter<?>>();\r
- \r
- ReportWriter<?> selectedWriter;\r
- Resource selectedModel;\r
- Resource input;\r
- \r
- @Override\r
- public void createControl(Composite parent) {\r
- \r
- \r
- Composite composite = new Composite(parent, SWT.NONE);\r
- composite.setLayout(new GridLayout(3,false));\r
- Label label = new Label(composite, SWT.NONE);\r
- label.setText("Model:");\r
- modelCombo = new CCombo(composite, SWT.BORDER|SWT.READ_ONLY);\r
- \r
- label = new Label(composite, SWT.NONE);\r
- label.setText("File:");\r
- filenameText = new Text(composite, SWT.BORDER|SWT.SINGLE);\r
- browseButton = new Button(composite, SWT.PUSH);\r
- browseButton.setText("Browse");\r
- \r
- reportWriters.add(new ModelDocumentWriter());\r
- reportWriters.add(new ReferredDocumentWriter());\r
- reportWriters.add(new DocumentStructureWriter());\r
- reportWriters.add(new DiagramStructureWriter());\r
- reportWriters.add(new DiagramStructureWithDependenciesWriter());\r
- reportWriters.add(new CompleteStructureWriter());\r
- \r
- Group group = new Group(composite, SWT.NONE);\r
- group.setText("Report templates");\r
- group.setLayout(new FillLayout(SWT.VERTICAL));\r
- \r
- GridDataFactory.fillDefaults().grab(true, false).align(SWT.FILL, SWT.CENTER).applyTo(filenameText);\r
- GridDataFactory.fillDefaults().span(2, 1).applyTo(modelCombo);\r
- GridDataFactory.fillDefaults().span(3, 1).applyTo(group);\r
- \r
- browseButton.addSelectionListener(new SelectionAdapter() {\r
- \r
- @Override\r
- public void widgetSelected(SelectionEvent e) {\r
- FileDialog dialog = new FileDialog(Display.getCurrent().getActiveShell(),SWT.SAVE);\r
- dialog.setFilterExtensions(new String[]{"*.pdf","*.html"});\r
- dialog.setFilterNames(new String[]{"PDF Document","HTML Document"});\r
- String filename = dialog.open();\r
- if (filename == null)\r
- filenameText.setText("");\r
- else\r
- filenameText.setText(filename);\r
- validate();\r
- }\r
- });\r
- \r
- \r
- SelectionListener listener = new SelectionAdapter() {\r
- @Override\r
- public void widgetSelected(SelectionEvent e) {\r
- Button selected = (Button)e.widget;\r
- select(selected);\r
- }\r
- };\r
- \r
- for (ReportWriter<?> rw : reportWriters) {\r
- Button b = new Button(group, SWT.RADIO);\r
- b.setText(rw.getName());\r
- b.setData(rw);\r
- b.addSelectionListener(listener);\r
- reportSelectionButtons.add(b);\r
- }\r
- \r
- SimanticsUI.getSession().asyncRequest(new ReadRequest() {\r
- \r
- @Override\r
- public void run(ReadGraph graph) throws DatabaseException {\r
- Resource project = SimanticsUI.getProject().get();\r
- modelToComboListener = new ModelToComboListener(modelCombo) {\r
- @Override\r
- public Resource getCurrentModel() {\r
- return selectedModel;\r
- } \r
- \r
- @Override\r
- public void loaded() {\r
- preselectModel();\r
- }\r
- };\r
- graph.syncRequest(new ModelRead(project),modelToComboListener);\r
- \r
- }\r
- });\r
- \r
- modelCombo.addSelectionListener(new SelectionAdapter() {\r
- @Override\r
- public void widgetSelected(SelectionEvent e) {\r
- int index = modelCombo.getSelectionIndex();\r
- if (index == -1)\r
- return;\r
- Resource model = (Resource)modelCombo.getData(Integer.toString(index));\r
- if (model != null)\r
- selectedModel = model;\r
- validate();\r
- }\r
- });\r
- \r
- select(reportSelectionButtons.get(0));\r
- setControl(composite);\r
- }\r
- \r
- public List<Button> getReportSelectionButtons() {\r
- return reportSelectionButtons;\r
- }\r
- \r
- private void select(Button selected) {\r
- selected.setSelection(true);\r
- for (Button b : reportSelectionButtons) {\r
- if (b != selected)\r
- b.setSelection(false);\r
- }\r
- selectedWriter = (ReportWriter<?>)selected.getData();\r
- validate();\r
- }\r
- \r
- private void validate() {\r
- setPageComplete(selectedWriter!= null && selectedModel != null && filenameText.getText().length() > 0);\r
- }\r
- \r
- public ReportWriter<?> getSelectedWriter() {\r
- return selectedWriter;\r
- }\r
- \r
- public String getFilename() {\r
- return filenameText.getText();\r
- }\r
- \r
- public Resource getSelectedModel() {\r
- return selectedModel;\r
- }\r
- \r
- public void setInput(Resource input) {\r
- this.input = input;\r
- }\r
- \r
- private void preselectModel() {\r
- if (input != null) {\r
- for (int i = 0; i < modelCombo.getItemCount(); i++) {\r
- if (input.equals(modelCombo.getData(Integer.toString(i)))) {\r
- modelCombo.select(i);\r
- selectedModel = input;\r
- }\r
- }\r
- }\r
- }\r
- \r
- @Override\r
- public void setVisible(boolean visible) {\r
- if (visible) {\r
- preselectModel();\r
- }\r
- super.setVisible(visible);\r
- }\r
-\r
-}\r
+package org.simantics.document.linking.wizard;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CCombo;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.simantics.Simantics;
+import org.simantics.db.ReadGraph;
+import org.simantics.db.Resource;
+import org.simantics.db.common.request.ReadRequest;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.document.linking.report.templates.CompleteStructureWriter;
+import org.simantics.document.linking.report.templates.DiagramStructureWithDependenciesWriter;
+import org.simantics.document.linking.report.templates.DiagramStructureWriter;
+import org.simantics.document.linking.report.templates.DocumentStructureWriter;
+import org.simantics.document.linking.report.templates.ModelDocumentWriter;
+import org.simantics.document.linking.report.templates.ReferredDocumentWriter;
+import org.simantics.document.linking.report.templates.ReportWriter;
+import org.simantics.document.linking.views.ModelRead;
+import org.simantics.document.linking.views.ModelToComboListener;
+import org.simantics.ui.SimanticsUI;
+
+
+/**
+ * Wizard page for selecting report type and file.
+ *
+ * @author Marko Luukkainen <marko.luukkainen@vtt.fi>
+ *
+ */
+public class ReportSelectionPage extends WizardPage{
+
+ protected ReportSelectionPage(String pageName) {
+ super(pageName,pageName,null);
+ setPageComplete(false);
+ }
+
+ CCombo modelCombo;
+ Text filenameText;
+ Button browseButton;
+
+ ModelToComboListener modelToComboListener;
+
+ List<Button> reportSelectionButtons = new ArrayList<Button>();
+ List<ReportWriter<?>> reportWriters = new ArrayList<ReportWriter<?>>();
+
+ ReportWriter<?> selectedWriter;
+ Resource selectedModel;
+ Resource input;
+
+ @Override
+ public void createControl(Composite parent) {
+
+
+ Composite composite = new Composite(parent, SWT.NONE);
+ composite.setLayout(new GridLayout(3,false));
+ Label label = new Label(composite, SWT.NONE);
+ label.setText("Model:");
+ modelCombo = new CCombo(composite, SWT.BORDER|SWT.READ_ONLY);
+
+ label = new Label(composite, SWT.NONE);
+ label.setText("File:");
+ filenameText = new Text(composite, SWT.BORDER|SWT.SINGLE);
+ browseButton = new Button(composite, SWT.PUSH);
+ browseButton.setText("Browse");
+
+ reportWriters.add(new ModelDocumentWriter());
+ reportWriters.add(new ReferredDocumentWriter());
+ reportWriters.add(new DocumentStructureWriter());
+ reportWriters.add(new DiagramStructureWriter());
+ reportWriters.add(new DiagramStructureWithDependenciesWriter());
+ reportWriters.add(new CompleteStructureWriter());
+
+ Group group = new Group(composite, SWT.NONE);
+ group.setText("Report templates");
+ group.setLayout(new FillLayout(SWT.VERTICAL));
+
+ GridDataFactory.fillDefaults().grab(true, false).align(SWT.FILL, SWT.CENTER).applyTo(filenameText);
+ GridDataFactory.fillDefaults().span(2, 1).applyTo(modelCombo);
+ GridDataFactory.fillDefaults().span(3, 1).applyTo(group);
+
+ browseButton.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ FileDialog dialog = new FileDialog(Display.getCurrent().getActiveShell(),SWT.SAVE);
+ dialog.setFilterExtensions(new String[]{"*.pdf","*.html"});
+ dialog.setFilterNames(new String[]{"PDF Document","HTML Document"});
+ String filename = dialog.open();
+ if (filename == null)
+ filenameText.setText("");
+ else
+ filenameText.setText(filename);
+ validate();
+ }
+ });
+
+
+ SelectionListener listener = new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ Button selected = (Button)e.widget;
+ select(selected);
+ }
+ };
+
+ for (ReportWriter<?> rw : reportWriters) {
+ Button b = new Button(group, SWT.RADIO);
+ b.setText(rw.getName());
+ b.setData(rw);
+ b.addSelectionListener(listener);
+ reportSelectionButtons.add(b);
+ }
+
+ Simantics.getSession().asyncRequest(new ReadRequest() {
+
+ @Override
+ public void run(ReadGraph graph) throws DatabaseException {
+ Resource project = Simantics.getProject().get();
+ modelToComboListener = new ModelToComboListener(modelCombo) {
+ @Override
+ public Resource getCurrentModel() {
+ return selectedModel;
+ }
+
+ @Override
+ public void loaded() {
+ preselectModel();
+ }
+ };
+ graph.syncRequest(new ModelRead(project),modelToComboListener);
+
+ }
+ });
+
+ modelCombo.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ int index = modelCombo.getSelectionIndex();
+ if (index == -1)
+ return;
+ Resource model = (Resource)modelCombo.getData(Integer.toString(index));
+ if (model != null)
+ selectedModel = model;
+ validate();
+ }
+ });
+
+ select(reportSelectionButtons.get(0));
+ setControl(composite);
+ }
+
+ public List<Button> getReportSelectionButtons() {
+ return reportSelectionButtons;
+ }
+
+ private void select(Button selected) {
+ selected.setSelection(true);
+ for (Button b : reportSelectionButtons) {
+ if (b != selected)
+ b.setSelection(false);
+ }
+ selectedWriter = (ReportWriter<?>)selected.getData();
+ validate();
+ }
+
+ private void validate() {
+ setPageComplete(selectedWriter!= null && selectedModel != null && filenameText.getText().length() > 0);
+ }
+
+ public ReportWriter<?> getSelectedWriter() {
+ return selectedWriter;
+ }
+
+ public String getFilename() {
+ return filenameText.getText();
+ }
+
+ public Resource getSelectedModel() {
+ return selectedModel;
+ }
+
+ public void setInput(Resource input) {
+ this.input = input;
+ }
+
+ private void preselectModel() {
+ if (input != null) {
+ for (int i = 0; i < modelCombo.getItemCount(); i++) {
+ if (input.equals(modelCombo.getData(Integer.toString(i)))) {
+ modelCombo.select(i);
+ selectedModel = input;
+ }
+ }
+ }
+ }
+
+ @Override
+ public void setVisible(boolean visible) {
+ if (visible) {
+ preselectModel();
+ }
+ super.setVisible(visible);
+ }
+
+}