Bug 414114 - Add FXML to Java Translator
diff --git a/bundles/tooling/org.eclipse.fx.ide.fxgraph/src/org/eclipse/fx/ide/fxgraph/converter/FXMLSaxHandler.xtend b/bundles/tooling/org.eclipse.fx.ide.fxgraph/src/org/eclipse/fx/ide/fxgraph/converter/FXMLSaxHandler.xtend
index eb38202..9e71fb2 100644
--- a/bundles/tooling/org.eclipse.fx.ide.fxgraph/src/org/eclipse/fx/ide/fxgraph/converter/FXMLSaxHandler.xtend
+++ b/bundles/tooling/org.eclipse.fx.ide.fxgraph/src/org/eclipse/fx/ide/fxgraph/converter/FXMLSaxHandler.xtend
@@ -11,22 +11,33 @@
import javax.inject.Inject
import org.eclipse.xtext.common.types.access.IJvmTypeProvider
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl
+import javax.xml.parsers.SAXParserFactory
class FXMLSaxHandler extends DefaultHandler {
- Model model;
+ public Model model;
Stack<Object> stack = new Stack;
// @Inject
// private IJvmTypeProvider.Factory jdtTypeProviderFactory;
- private IJvmTypeProvider jdtTypeProvider;
+// private IJvmTypeProvider jdtTypeProvider;
+
+ private String packageName;
+
+ new(String packageName)
+ {
+ this.packageName = packageName;
+ }
override startDocument() throws SAXException {
// jdtTypeProvider = jdtTypeProviderFactory.findOrCreateTypeProvider(new ResourceSetImpl)
model = FXGraphFactory.eINSTANCE.createModel
- val componentDef = FXGraphFactory.eINSTANCE.createComponentDefinition
+ val pack = FXGraphFactory.eINSTANCE.createPackageDeclaration
+ pack.setName(packageName)
+ model.setPackage(pack)
+ val componentDef = FXGraphFactory.eINSTANCE.createComponentDefinition
model.componentDef = componentDef
}
@@ -50,6 +61,8 @@
// A property
val e = stack.peek as Element
val prop = FXGraphFactory.eINSTANCE.createProperty
+ val vProp = FXGraphFactory.eINSTANCE.createSimpleValueProperty
+
e.properties.add(prop)
stack.push(prop)
@@ -62,6 +75,10 @@
jvmType.simpleName = localName
t.type = jvmType
e.type = t
+
+ if( model.componentDef.rootNode == null ) {
+ model.componentDef.rootNode = e
+ }
stack.push(e)
}
@@ -70,9 +87,4 @@
override endElement(String uri, String localName, String qName) throws SAXException {
stack.pop
}
-
- def static void main(String[] args) {
- val h = new FXMLSaxHandler()
-
- }
}
\ No newline at end of file
diff --git a/bundles/tooling/org.eclipse.fx.ide.fxml.compiler/src/org/eclipse/fx/ide/fxml/compiler/PrimitiveType.xtend b/bundles/tooling/org.eclipse.fx.ide.fxml.compiler/src/org/eclipse/fx/ide/fxml/compiler/PrimitiveType.xtend
new file mode 100644
index 0000000..90e3cd9
--- /dev/null
+++ b/bundles/tooling/org.eclipse.fx.ide.fxml.compiler/src/org/eclipse/fx/ide/fxml/compiler/PrimitiveType.xtend
@@ -0,0 +1,5 @@
+package org.eclipse.fx.ide.fxml.compiler
+
+enum PrimitiveType {
+
+}
\ No newline at end of file
diff --git a/bundles/tooling/org.eclipse.fx.ide.fxml.compiler/src/org/eclipse/fx/ide/fxml/compiler/ReflectionHelper.xtend b/bundles/tooling/org.eclipse.fx.ide.fxml.compiler/src/org/eclipse/fx/ide/fxml/compiler/ReflectionHelper.xtend
index a8d403f..a83ad4e 100644
--- a/bundles/tooling/org.eclipse.fx.ide.fxml.compiler/src/org/eclipse/fx/ide/fxml/compiler/ReflectionHelper.xtend
+++ b/bundles/tooling/org.eclipse.fx.ide.fxml.compiler/src/org/eclipse/fx/ide/fxml/compiler/ReflectionHelper.xtend
@@ -27,4 +27,6 @@
return p.value;
}
+
+// def static
}
\ No newline at end of file
diff --git a/bundles/tooling/org.eclipse.fx.ide.fxml.compiler/src/org/eclipse/fx/ide/fxml/compiler/TestLoading.xtend b/bundles/tooling/org.eclipse.fx.ide.fxml.compiler/src/org/eclipse/fx/ide/fxml/compiler/TestLoading.xtend
new file mode 100644
index 0000000..4e17fbb
--- /dev/null
+++ b/bundles/tooling/org.eclipse.fx.ide.fxml.compiler/src/org/eclipse/fx/ide/fxml/compiler/TestLoading.xtend
@@ -0,0 +1,20 @@
+package org.eclipse.fx.ide.fxml.compiler
+
+import java.io.File
+import javax.xml.parsers.SAXParserFactory
+import org.eclipse.fx.ide.fxgraph.converter.FXMLSaxHandler
+import org.eclipse.fx.ide.fxgraph.converter.FXGraphConverter
+
+class TestLoading {
+ def static void main(String[] args) {
+ val f = SAXParserFactory.newInstance
+ f.setNamespaceAware(true);
+ val p = f.newSAXParser
+ val h = new FXMLSaxHandler("test")
+
+ p.parse(new File("/Users/tomschindl/git/efxclipse/bundles/tooling/org.eclipse.fx.ide.fxml.compiler/sample-src/sample/Sample.fxml"), h)
+ val c = new FXGraphConverter
+ c.generate(h.model);
+ }
+
+}
\ No newline at end of file