1 package org.simantics.xml.sax.ui.wizard;
\r
4 import java.io.FilenameFilter;
\r
5 import java.io.IOException;
\r
6 import java.util.Arrays;
\r
8 import org.eclipse.jface.layout.GridDataFactory;
\r
9 import org.eclipse.jface.viewers.CheckboxTableViewer;
\r
10 import org.eclipse.jface.viewers.IStructuredContentProvider;
\r
11 import org.eclipse.jface.viewers.ITableLabelProvider;
\r
12 import org.eclipse.jface.viewers.LabelProvider;
\r
13 import org.eclipse.jface.viewers.Viewer;
\r
14 import org.eclipse.jface.wizard.WizardPage;
\r
15 import org.eclipse.swt.SWT;
\r
16 import org.eclipse.swt.events.SelectionAdapter;
\r
17 import org.eclipse.swt.events.SelectionEvent;
\r
18 import org.eclipse.swt.graphics.Image;
\r
19 import org.eclipse.swt.layout.GridLayout;
\r
20 import org.eclipse.swt.widgets.Button;
\r
21 import org.eclipse.swt.widgets.Composite;
\r
22 import org.eclipse.swt.widgets.Label;
\r
23 import org.eclipse.swt.widgets.Text;
\r
24 import org.simantics.xml.sax.OntologyCombinator;
\r
26 public class SchemaCombinationPage extends WizardPage {
\r
27 private Composite composite;
\r
32 CheckboxTableViewer fileSelector;
\r
35 public SchemaCombinationPage() {
\r
36 super("XML Schema conversion","Combining schema versions", null);
\r
37 setPageComplete(false);
\r
41 public void setVisible(boolean visible) {
\r
42 super.setVisible(visible);
\r
44 if (outputPlugin == null) {
\r
45 Label label = new Label(composite, SWT.NONE);
\r
46 label.setText("Output plug-in has not been set, cannot create combination resources");
\r
49 String name = outputPlugin.getName();
\r
50 name = name.replaceAll("\\.", "/");
\r
51 srcDir = new File(outputPlugin.getAbsolutePath() +"/src/" + name);
\r
52 fileSelector.setInput(srcDir);
\r
58 public void createControl(Composite parent) {
\r
59 composite = new Composite(parent, SWT.NONE);
\r
60 composite.setLayout(new GridLayout(1,true));
\r
61 setControl(composite);
\r
63 Label label = new Label(composite, SWT.NONE);
\r
64 label.setText("Ontology resource files");
\r
65 fileSelector = CheckboxTableViewer.newCheckList(composite, SWT.BORDER);
\r
66 fileSelector.setContentProvider(new FileContentProvider());
\r
67 fileSelector.setLabelProvider(new FileLabelProvider());
\r
69 label = new Label(composite, SWT.NONE);
\r
70 label.setText("Output file");
\r
71 outputText = new Text(composite, SWT.BORDER|SWT.SINGLE);
\r
72 Button button = new Button(composite, SWT.PUSH);
\r
73 button.setText("Combine");
\r
74 button.addSelectionListener(new SelectionAdapter() {
\r
76 public void widgetSelected(SelectionEvent e) {
\r
81 GridDataFactory.fillDefaults().grab(true, true).align(SWT.FILL, SWT.FILL).applyTo(fileSelector.getControl());
\r
82 GridDataFactory.fillDefaults().grab(true, false).align(SWT.FILL, SWT.CENTER).applyTo(outputText);
\r
83 GridDataFactory.fillDefaults().align(SWT.RIGHT, SWT.CENTER).applyTo(button);
\r
86 public void setOutputPlugin(File outputPlugin) {
\r
87 this.outputPlugin = outputPlugin;
\r
90 private void doCombination() {
\r
91 String outputName = outputText.getText();
\r
92 if (outputName == null || outputName.length() < 2)
\r
94 if (!outputName.endsWith(".java"))
\r
95 outputName+=".java";
\r
97 File outputFile = new File(srcDir.getAbsolutePath()+"/"+outputName);
\r
99 Object sel[] = fileSelector.getCheckedElements();
\r
100 File inputFiles[] = new File[sel.length];
\r
101 for (int i = 0; i < sel.length; i++) {
\r
102 inputFiles[i] = (File)sel[i];
\r
106 OntologyCombinator.combine(inputFiles, outputFile);
\r
107 setPageComplete(true);
\r
108 } catch (IOException e) {
\r
109 setErrorMessage(e.getMessage());
\r
110 e.printStackTrace();
\r
115 private static class FileContentProvider implements IStructuredContentProvider {
\r
117 public Object[] getElements(Object inputElement) {
\r
118 File directory = (File)inputElement;
\r
119 if (!directory.isDirectory())
\r
120 return new Object[0];
\r
121 File[] files = directory.listFiles(new FilenameFilter() {
\r
124 public boolean accept(File dir, String name) {
\r
125 return name.endsWith("java");
\r
132 public void dispose() {
\r
137 public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
\r
142 private static class FileLabelProvider extends LabelProvider implements ITableLabelProvider {
\r
144 public Image getColumnImage(Object element, int columnIndex) {
\r
149 public String getColumnText(Object element, int columnIndex) {
\r
150 File file = (File)element;
\r
151 if (columnIndex == 0)
\r
152 return file.getName();
\r