]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.g3d/src/org/simantics/proconf/g3d/views/AppearanceEditor.java
Removing ancient 3d framework
[simantics/3d.git] / org.simantics.g3d / src / org / simantics / proconf / g3d / views / AppearanceEditor.java
diff --git a/org.simantics.g3d/src/org/simantics/proconf/g3d/views/AppearanceEditor.java b/org.simantics.g3d/src/org/simantics/proconf/g3d/views/AppearanceEditor.java
deleted file mode 100644 (file)
index 81cb95f..0000000
+++ /dev/null
@@ -1,1146 +0,0 @@
-/*******************************************************************************\r
- * Copyright (c) 2007- VTT Technical Research Centre of Finland.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the terms of the Eclipse Public License v1.0\r
- * which accompanies this distribution, and is available at\r
- * http://www.eclipse.org/legal/epl-v10.html\r
- *\r
- * Contributors:\r
- *     VTT Technical Research Centre of Finland - initial API and implementation\r
- *******************************************************************************/\r
-package org.simantics.proconf.g3d.views;\r
-\r
-import java.util.ArrayList;\r
-import java.util.Collection;\r
-import java.util.Iterator;\r
-\r
-import org.eclipse.jface.viewers.ISelection;\r
-import org.eclipse.swt.SWT;\r
-import org.eclipse.swt.events.MouseAdapter;\r
-import org.eclipse.swt.events.MouseEvent;\r
-import org.eclipse.swt.events.SelectionAdapter;\r
-import org.eclipse.swt.events.SelectionEvent;\r
-import org.eclipse.swt.graphics.Color;\r
-import org.eclipse.swt.graphics.RGB;\r
-import org.eclipse.swt.layout.GridData;\r
-import org.eclipse.swt.layout.GridLayout;\r
-import org.eclipse.swt.widgets.Button;\r
-import org.eclipse.swt.widgets.ColorDialog;\r
-import org.eclipse.swt.widgets.Composite;\r
-import org.eclipse.swt.widgets.Slider;\r
-import org.eclipse.swt.widgets.Text;\r
-import org.eclipse.ui.IWorkbenchPart;\r
-import org.simantics.db.Graph;\r
-import org.simantics.db.GraphRequestAdapter;\r
-import org.simantics.db.GraphRequestStatus;\r
-import org.simantics.db.Resource;\r
-import org.simantics.layer0.utils.IEntity;\r
-import org.simantics.layer0.utils.StubLinkedList;\r
-import org.simantics.layer0.utils.internal.Entity;\r
-import org.simantics.proconf.g3d.Resources;\r
-import org.simantics.proconf.g3d.base.AppearanceTools;\r
-import org.simantics.proconf.g3d.stubs.Appearance;\r
-import org.simantics.proconf.g3d.stubs.ImageTexture;\r
-import org.simantics.proconf.g3d.stubs.Material;\r
-import org.simantics.proconf.g3d.stubs.MultiTexture;\r
-import org.simantics.proconf.g3d.stubs.Shader;\r
-import org.simantics.proconf.g3d.stubs.Texture;\r
-import org.simantics.proconf.g3d.stubs.TextureCoordinateGenerator;\r
-import org.simantics.proconf.image.ImageUtils;\r
-import org.simantics.proconf.image.interfaces.IImage;\r
-import org.simantics.proconf.image.interfaces.IImageFactory;\r
-import org.simantics.proconf.image.ui.ImageComposite;\r
-import org.simantics.proconf.ui.utils.ResourceAdaptionUtils;\r
-import org.simantics.utils.ui.ErrorLogger;\r
-\r
-\r
-public class AppearanceEditor extends SinglePageResourceView{\r
-\r
-    //Appearance appearance;\r
-       Resource shapeResource;\r
-       Resource appearanceResource;\r
-       \r
-       private enum EditorState{NONE,NO_SHAPE,NO_APPEARANCE, APPEARANCE};\r
-       EditorState state = EditorState.NONE;\r
-       \r
-    Button materialButton;\r
-    \r
-    Composite ambientComposite;\r
-    Composite diffuseComposite;\r
-    Composite specularComposite;\r
-    Composite emissiveComposite;\r
-    Slider specularSlider;\r
-    Slider transparencySlider;\r
-    \r
-    \r
-    Composite textureParent;\r
-    \r
-    Button textureButton;\r
-    Button addTextureButton;\r
-    \r
-    \r
-    //Image image = null;\r
-    \r
-    boolean updating = false;\r
-    \r
-    private ArrayList<TextureComposite> textureComposites = new ArrayList<TextureComposite>();\r
-    \r
-    Button shaderButton;\r
-    Text fragmentShaderText; \r
-    Text vertexShaderText; \r
-    \r
-    Button apply3Button;\r
-    Button apply2Button;\r
-    Button applyButton;\r
-    \r
-    public AppearanceEditor() {\r
-       super();\r
-        //super(Activator.PLUGIN_ID);\r
-       \r
-    }\r
-    \r
-    @Override\r
-    public void createPartControl(Composite parent) {\r
-       super.createPartControl(parent);\r
-       createWidgets();\r
-    }\r
-\r
-    @Override\r
-    protected String getFormText() {\r
-        return "Appearance Editor";\r
-    }\r
-\r
-//    @Override\r
-//    protected void beforeCreateWidgets() {\r
-//        if (!(getInputResource().isInstanceOf(GlobalIdMap.get(ThreeDimensionalModelingOntologyMapping.APPEARANCE))))\r
-//            throw new RuntimeException("Trying to open resource that is not appearance");\r
-//        appearance = AppearanceFactory.create(getInputResource());\r
-//    }\r
-    \r
-    \r
-\r
-    @Override\r
-    protected void createWidgets() {\r
-       \r
-       if (shapeResource == null) {\r
-               if (state != EditorState.NO_SHAPE) {\r
-                       clearForm();\r
-                       state = EditorState.NO_SHAPE;\r
-                       toolkit.createLabel(getBody(), "No shape selected");\r
-                       getActiveForm().layout(true, true);\r
-               }\r
-       } else if (appearanceResource == null){\r
-               if (state != EditorState.NO_APPEARANCE) {\r
-                       clearForm();\r
-                       state = EditorState.NO_APPEARANCE;\r
-                       toolkit.createLabel(getBody(), "Selected shape does not have material definition.");\r
-                       Button b = toolkit.createButton(getBody(), "Create Appearance", SWT.PUSH);\r
-                       b.addSelectionListener(new SelectionAdapter() {\r
-                               @Override\r
-                               public void widgetSelected(SelectionEvent e) {\r
-                                       getSession().asyncWrite(new GraphRequestAdapter() {\r
-                                               @Override\r
-                                               public GraphRequestStatus perform(Graph g) throws Exception {\r
-                                                       Appearance appearance = Appearance.createDefault(g);\r
-                                                       appearanceResource = appearance.getResource();\r
-                                                       g.addStatement(shapeResource, Resources.g3dResource.HasAppearance, appearanceResource);\r
-                                                       return GraphRequestStatus.transactionComplete();\r
-                                               }\r
-                                               \r
-                                               @Override\r
-                                               public void requestCompleted( GraphRequestStatus status) {\r
-                                                       reloadInUIThread();\r
-                                               }\r
-                                       });\r
-\r
-                               }\r
-                       });\r
-                       getActiveForm().layout(true, true);\r
-               }\r
-       } else {\r
-               if (state != EditorState.APPEARANCE) {\r
-                       clearForm();\r
-                       state = EditorState.APPEARANCE;\r
-                       createMaterialGroup(newGridSection(2, 2, false, false, "Material", "Material properties"));\r
-                       createTextureGroup(newGridSection(1, 1, false, false, "Texture", "Texture properties"));\r
-                       createShaderGroup(newGridSection(2, 2, false, false, "Shader", "Shader properties"));\r
-                       getActiveForm().layout(true, true);\r
-               }\r
-               \r
-       }\r
-    }\r
-    \r
-    @Override\r
-    public void clearForm() {\r
-       super.clearForm();\r
-       textureComposites.clear();\r
-    }\r
-    \r
-    @Override\r
-    protected void pageSelectionChanged(IWorkbenchPart part, ISelection selection) {\r
-       Resource res[] = ResourceAdaptionUtils.toResources(selection);\r
-       if (res.length == 0) {\r
-               shapeResource = null;\r
-               appearanceResource = null;\r
-               reload();\r
-               return;\r
-       }\r
-       final Resource sel = res[0];\r
-       if (sel.equals(shapeResource))\r
-                       return;\r
-       //System.out.println("AppearanceEditor.pageSelectionChanged");\r
-       getSession().asyncRead(new GraphRequestAdapter() {\r
-               @Override\r
-               public GraphRequestStatus perform(Graph g) throws Exception {\r
-                       \r
-                       shapeResource = null;\r
-                       appearanceResource = null;\r
-                       // selected object must be a shape\r
-                       if (!g.isInstanceOf(sel, Resources.g3dResource.Shape)) {\r
-                               return GraphRequestStatus.transactionCancel();\r
-                       }\r
-                       // the shape must not be ah geometry definition\r
-                       if (g.getObjects(sel, Resources.g3dResource.GeometryDefinitionOf).size() > 0)\r
-                               return GraphRequestStatus.transactionCancel();\r
-                       \r
-                       shapeResource = sel;\r
-                       Collection<Resource> res = g.getObjects(shapeResource, Resources.g3dResource.HasAppearance);\r
-                       if (res.size() == 1)\r
-                               appearanceResource = res.iterator().next();\r
-                       return GraphRequestStatus.transactionComplete();\r
-               }\r
-               \r
-               @Override\r
-               public void requestCompleted(GraphRequestStatus status) {\r
-                       reloadInUIThread();\r
-               }\r
-       });\r
-    }\r
-    \r
-    public void reloadInUIThread() {\r
-       parent.getDisplay().asyncExec(new Runnable() {\r
-                       @Override\r
-                       public void run() {\r
-                               reload();\r
-                       }\r
-               });\r
-    }\r
-    \r
-    public void reload() {\r
-        if (updating)\r
-             return;\r
-       createWidgets();\r
-       if (state == EditorState.APPEARANCE) {\r
-               getSession().asyncRead(new GraphRequestAdapter() {\r
-                       @Override\r
-                       public GraphRequestStatus perform(Graph g) throws Exception {\r
-                               reload(g);\r
-                               return GraphRequestStatus.transactionComplete();\r
-                       }\r
-               });\r
-       }\r
-    }\r
-\r
-    @Override\r
-    public void reload(Graph g) {\r
-        if (updating)\r
-            return;\r
-        if (state != EditorState.APPEARANCE) {\r
-               return;\r
-        }\r
-        Appearance appearance = new Appearance(g,appearanceResource);\r
-        Material m = appearance.getMaterial();\r
-        Texture t = appearance.getTexture();\r
-        Shader s = appearance.getShader();\r
-        loadMaterial(m);\r
-        loadTexture(t);\r
-        loadShader(s);\r
-\r
-\r
-    }\r
-    \r
-    private void loadMaterial(Material m) {\r
-       final boolean hasMaterial;\r
-       final Color ambient;\r
-       final Color diffuse;\r
-       final Color specular;\r
-       final Color emissive;\r
-       final int shininess;\r
-       final int transparency;\r
-       if (m == null) {\r
-               hasMaterial = false;\r
-               ambient = null;\r
-               diffuse = null;\r
-               specular = null;\r
-               emissive = null;\r
-               shininess = 0;\r
-               transparency = 0;\r
-       } else {\r
-               hasMaterial = true;\r
-               ambient = AppearanceTools.getColor(m.getAmbientColor(), this.getBody().getDisplay());\r
-               diffuse = AppearanceTools.getColor(m.getDiffuseColor(), this.getBody().getDisplay());\r
-               specular = AppearanceTools.getColor(m.getSpecularColor(), this.getBody().getDisplay());\r
-               emissive = AppearanceTools.getColor(m.getEmissiveColor(), this.getBody().getDisplay());\r
-               shininess = (int)m.getShininess()[0];\r
-               transparency = (int)(m.getTransparency()[0]*100.0);\r
-       }\r
-       parent.getDisplay().asyncExec(new Runnable() {\r
-               @Override\r
-               public void run() {\r
-                       boolean t = hasMaterial;\r
-                   materialButton.setSelection(t);\r
-                   ambientComposite.setEnabled(t);\r
-                   diffuseComposite.setEnabled(t);\r
-                   specularComposite.setEnabled(t);\r
-                   emissiveComposite.setEnabled(t);\r
-                   specularSlider.setEnabled(t);\r
-                   transparencySlider.setEnabled(t);\r
-                       if (hasMaterial) {\r
-                   ambientComposite.setBackground(ambient);\r
-                   diffuseComposite.setBackground(diffuse);\r
-                   specularComposite.setBackground(specular);\r
-                   emissiveComposite.setBackground(emissive);\r
-                   specularSlider.setSelection(shininess);\r
-                   transparencySlider.setSelection(transparency);\r
-               } else {\r
-                       Color c = parent.getDisplay().getSystemColor(SWT.COLOR_DARK_GRAY);\r
-                       ambientComposite.setBackground(c);\r
-                   diffuseComposite.setBackground(c);\r
-                   specularComposite.setBackground(c);\r
-                   emissiveComposite.setBackground(c);\r
-               }\r
-                       \r
-               };\r
-       });\r
-        \r
-    }\r
-    \r
-    private void loadTexture(Texture t) {\r
-       //System.out.println("AppearanceEditor.loadTexture");\r
-        if (t == null) {\r
-               parent.getDisplay().asyncExec(new Runnable() {\r
-                       @Override\r
-                       public void run() {\r
-                               textureButton.setSelection(false);\r
-                       }\r
-               });\r
-            \r
-            return;\r
-        }\r
-        parent.getDisplay().asyncExec(new Runnable() {\r
-               @Override\r
-               public void run() {\r
-                       textureButton.setSelection(true);\r
-               }\r
-        });\r
-        \r
-        if (t.isInstanceOf(Resources.g3dResource.ImageTexture)) {\r
-            //final ImageTexture t2 = new ImageTexture(t);\r
-               final Resource t2 = t.getResource();\r
-               parent.getDisplay().asyncExec(new Runnable() {\r
-                       @Override\r
-                       public void run() {\r
-                               while (textureComposites.size() > 1) {\r
-                           textureComposites.remove(textureComposites.size()-1).dispose();\r
-                       }\r
-                       if (textureComposites.size() == 0) {\r
-                           textureComposites.add(new TextureComposite(textureParent,SWT.NONE));\r
-                       }\r
-                       getSession().asyncWrite(new GraphRequestAdapter() {\r
-                               public GraphRequestStatus perform(Graph g) throws Exception {\r
-                                       try {\r
-                                   textureComposites.get(0).update(new ImageTexture(g,t2));\r
-                               } catch (Exception e) {\r
-                                   ErrorLogger.defaultLogError(e);\r
-                               }\r
-                               return GraphRequestStatus.transactionComplete();\r
-                               };\r
-                   \r
-                       });\r
-                       }\r
-               });\r
-            \r
-            \r
-        } else if (t.isInstanceOf(Resources.g3dResource.MultiTexture)) {\r
-            \r
-            MultiTexture mt = new MultiTexture(t);\r
-            StubLinkedList<IEntity> elements = new StubLinkedList<IEntity>(mt.getMultiTextureElementList());\r
-            final Resource listResource = mt.getMultiTextureElementList().getResource();\r
-            final int count = elements.size();\r
-            parent.getDisplay().asyncExec(new Runnable() {\r
-               @Override\r
-               public void run() {\r
-                       while (textureComposites.size() > count) {\r
-                        textureComposites.get(textureComposites.size()-1).dispose();\r
-                        textureComposites.remove(textureComposites.size()-1);\r
-                    }\r
-                    while (textureComposites.size() < count) {\r
-                        textureComposites.add(new TextureComposite(textureParent,SWT.NONE));\r
-                    }\r
-                       getSession().asyncWrite(new GraphRequestAdapter() {\r
-                               @Override\r
-                               public GraphRequestStatus perform(Graph g)\r
-                                               throws Exception {\r
-                                       StubLinkedList<IEntity> elements = new StubLinkedList<IEntity>(new Entity(g,listResource));\r
-                                       Iterator<IEntity> i = elements.iterator();\r
-                           int index = 0;\r
-                           while (i.hasNext()) {\r
-                               //MultiTextureElement e = new MultiTextureElement(i.next());\r
-                               //int index = e.getMultiTextureIndexValue();\r
-                               Texture tex = new Texture(i.next());//e.getTexture();\r
-                               if (tex.isInstanceOf(Resources.g3dResource.ImageTexture)) {\r
-                                   ImageTexture t2 = new ImageTexture(tex);\r
-                                   try {\r
-                                       textureComposites.get(index).update(t2);\r
-                                   } catch (Exception err) {\r
-                                       ErrorLogger.defaultLogError(err);\r
-                                   }\r
-                               }\r
-                               index++;\r
-                           }\r
-                                       return null;\r
-                               }\r
-                       });\r
-               }\r
-            });\r
-            \r
-            \r
-            \r
-        }\r
-    }\r
-    \r
-    private void loadShader(Shader s) {\r
-       final boolean hasShader = (s != null);\r
-       final String vertexShader;\r
-       final String fragmentShader;\r
-       if (hasShader) {\r
-               vertexShader = s.getVertexShader()[0];\r
-               fragmentShader = s.getFragmentShader()[0];\r
-       } else {\r
-               vertexShader = null;\r
-               fragmentShader = null;\r
-       }\r
-       parent.getDisplay().asyncExec(new Runnable() {\r
-               @Override\r
-               public void run() {\r
-                       if (!hasShader) {\r
-                   shaderButton.setSelection(false);\r
-               } else {\r
-                   shaderButton.setSelection(true);\r
-                   vertexShaderText.setText(vertexShader);\r
-                   fragmentShaderText.setText(fragmentShader);\r
-               }\r
-                       \r
-               }\r
-       });\r
-        \r
-    }\r
-    \r
-    private void createMaterialGroup(Composite parent) {\r
-        toolkit.paintBordersFor(parent);\r
-        toolkit.setBorderStyle(SWT.BORDER);\r
-        \r
-        materialButton = toolkit.createButton(parent, "Has Material", SWT.CHECK);\r
-        materialButton.addSelectionListener(new SelectionAdapter() {\r
-            public void widgetSelected(SelectionEvent e) {\r
-               boolean t = materialButton.getSelection();\r
-                   ambientComposite.setEnabled(t);\r
-                   diffuseComposite.setEnabled(t);\r
-                   specularComposite.setEnabled(t);\r
-                   emissiveComposite.setEnabled(t);\r
-                   specularSlider.setEnabled(t);\r
-                   transparencySlider.setEnabled(t);\r
-                \r
-            }\r
-        });\r
-        GridData data = new GridData(GridData.FILL, GridData.FILL, false, false,2,1);\r
-        materialButton.setLayoutData(data);\r
-     \r
-        data = new GridData(GridData.FILL, GridData.FILL, false, false,1,1);\r
-        data.widthHint = 100;\r
-        data.heightHint = 20;\r
-\r
-        toolkit.createLabel(parent, "Ambient");\r
-        ambientComposite = toolkit.createComposite(parent, SWT.BORDER);\r
-        ambientComposite.setLayoutData(data);\r
-        ambientComposite.addMouseListener(new MouseAdapter() {\r
-           @Override\r
-            public void mouseUp(MouseEvent e) {\r
-                ColorDialog dialog = new ColorDialog(AppearanceEditor.this.getBody().getShell());\r
-                RGB rgb = dialog.open();\r
-                if (rgb != null) {\r
-                    ambientComposite.setBackground(new Color(AppearanceEditor.this.getBody().getDisplay(),rgb));\r
-                    \r
-                }\r
-           } \r
-        });\r
-\r
-        toolkit.createLabel(parent, "Diffuse");\r
-        diffuseComposite = toolkit.createComposite(parent, SWT.BORDER);\r
-        diffuseComposite.setLayoutData(data);\r
-        diffuseComposite.addMouseListener(new MouseAdapter() {\r
-            @Override\r
-             public void mouseUp(MouseEvent e) {\r
-                 ColorDialog dialog = new ColorDialog(AppearanceEditor.this.getBody().getShell());\r
-                 RGB rgb = dialog.open();\r
-                 if (rgb != null) {\r
-                     diffuseComposite.setBackground(new Color(AppearanceEditor.this.getBody().getDisplay(),rgb));\r
-                     \r
-                 }\r
-            } \r
-         });\r
-        toolkit.createLabel(parent, "Specular");\r
-        specularComposite = toolkit.createComposite(parent, SWT.BORDER);\r
-        specularComposite.setLayoutData(data);\r
-        specularComposite.addMouseListener(new MouseAdapter() {\r
-            @Override\r
-             public void mouseUp(MouseEvent e) {\r
-                 ColorDialog dialog = new ColorDialog(AppearanceEditor.this.getBody().getShell());\r
-                 \r
-                 RGB rgb = dialog.open();\r
-                 if (rgb != null) {\r
-                     specularComposite.setBackground(new Color(AppearanceEditor.this.getBody().getDisplay(),rgb));\r
-                     \r
-                 }\r
-            } \r
-         });\r
-        toolkit.createLabel(parent, "Emissive");\r
-        emissiveComposite = toolkit.createComposite(parent, SWT.BORDER);\r
-        emissiveComposite.setLayoutData(data);\r
-        emissiveComposite.addMouseListener(new MouseAdapter() {\r
-            @Override\r
-             public void mouseUp(MouseEvent e) {\r
-                 ColorDialog dialog = new ColorDialog(AppearanceEditor.this.getBody().getShell());\r
-                 RGB rgb = dialog.open();\r
-                 if (rgb != null) {\r
-                     emissiveComposite.setBackground(new Color(AppearanceEditor.this.getBody().getDisplay(),rgb));\r
-                     \r
-                 }\r
-            } \r
-         });\r
-        toolkit.createLabel(parent, "Shininess");\r
-        specularSlider = new Slider(parent,SWT.NONE);\r
-        specularSlider.setValues(20, 0, 255, 1, 1, 10);\r
-        toolkit.adapt(specularSlider, true, true);\r
-        toolkit.createLabel(parent, "Transparency");\r
-        transparencySlider = new Slider(parent,SWT.NONE);\r
-        transparencySlider.setValues(0, 0, 100, 1, 1, 10);\r
-        toolkit.adapt(transparencySlider, true, true);\r
-        apply2Button = toolkit.createButton(parent, "Apply", SWT.PUSH);\r
-        apply2Button.addSelectionListener(new SelectionAdapter() {\r
-            public void widgetSelected(SelectionEvent e) {\r
-                convertMaterial();\r
-            }\r
-        });\r
-        \r
-    }\r
-    \r
-    private void createTextureGroup(Composite parent) {\r
-        textureParent = parent;\r
-        toolkit.paintBordersFor(parent);\r
-        toolkit.setBorderStyle(SWT.BORDER);\r
-        \r
-        textureButton = toolkit.createButton(parent, "Has Texture", SWT.CHECK);\r
-        textureButton.addSelectionListener(new SelectionAdapter() {\r
-            public void widgetSelected(SelectionEvent e) {\r
-                //loadImageButton.setEnabled(textureButton.getSelection());\r
-                //imageComposite.setEnabled(textureButton.getSelection());\r
-                //textureButton.setEnabled(textureButton.getSelection());\r
-                \r
-            }\r
-        });\r
-        \r
-        \r
-        \r
-        textureButton.addSelectionListener(new SelectionAdapter() {\r
-            public void widgetSelected(SelectionEvent e) {\r
-                //loadImageButton.setEnabled(textureButton.getSelection());\r
-                //imageComposite.setEnabled(textureButton.getSelection());\r
-                //textureButton.setEnabled(textureButton.getSelection());\r
-                \r
-            }\r
-        });\r
-        addTextureButton = toolkit.createButton(parent, "Add Texture", SWT.PUSH);\r
-        addTextureButton.addSelectionListener(new SelectionAdapter() {\r
-            public void widgetSelected(SelectionEvent e) {\r
-                textureComposites.add(new TextureComposite(textureParent,SWT.NONE));\r
-            }\r
-        });\r
-        applyButton = toolkit.createButton(parent, "Apply", SWT.PUSH);\r
-        applyButton.addSelectionListener(new SelectionAdapter() {\r
-            public void widgetSelected(SelectionEvent e) {\r
-                convertImage();\r
-            }\r
-        });\r
-        \r
-    }\r
-    \r
-    private void createShaderGroup(Composite parent) {\r
-        toolkit.paintBordersFor(parent);\r
-        toolkit.setBorderStyle(SWT.BORDER);\r
-        GridData data = new GridData(SWT.FILL,SWT.FILL,true,true,2,1);\r
-        shaderButton = toolkit.createButton(parent, "Has Shader", SWT.CHECK);\r
-        shaderButton.addSelectionListener(new SelectionAdapter() {\r
-            public void widgetSelected(SelectionEvent e) {\r
-               \r
-                \r
-            }\r
-        });\r
-        shaderButton.setLayoutData(data);\r
-        data = new GridData(SWT.FILL,SWT.FILL,true,true,1,1);\r
-        data.widthHint = 400;\r
-        data.heightHint = 200;\r
-        toolkit.createLabel(parent, "Vertex Shader");\r
-        vertexShaderText = toolkit.createText(parent,"", SWT.MULTI);\r
-        vertexShaderText.setLayoutData(data);\r
-        toolkit.createLabel(parent, "Fragment Shader");\r
-        fragmentShaderText = toolkit.createText(parent,"", SWT.MULTI);\r
-        fragmentShaderText.setLayoutData(data);\r
-        apply3Button = toolkit.createButton(parent, "Apply", SWT.PUSH);\r
-        apply3Button.addSelectionListener(new SelectionAdapter() {\r
-            public void widgetSelected(SelectionEvent e) {\r
-                convertShader();\r
-            }\r
-        });\r
-    }\r
-    \r
-    \r
-    \r
-    private void convertShader() {\r
-        updating = true;\r
-        final boolean hasShader = shaderButton.getSelection();\r
-        final String vertexShader = vertexShaderText.getText();\r
-        final String fragmentShader = fragmentShaderText.getText();\r
-        getSession().asyncWrite(new GraphRequestAdapter() {\r
-               @Override\r
-               public GraphRequestStatus perform(Graph g) throws Exception {\r
-                       Appearance appearance = new Appearance(g,appearanceResource);\r
-                       if (hasShader) {\r
-                    Shader s = appearance.getShader();\r
-                    if (s == null) {\r
-                        s = Shader.createDefault(g);\r
-                        appearance.setShader(s);\r
-\r
-                    }\r
-                    s.setVertexShader(vertexShader);\r
-                    s.setFragmentShader(fragmentShader);\r
-                } else {\r
-                    appearance.setShader(null);\r
-                }\r
-                       \r
-                       updating = false;\r
-                       return GraphRequestStatus.transactionComplete();\r
-               }\r
-        });\r
-        \r
-        \r
-    }\r
-    \r
-    private void convertMaterial() {\r
-        updating = true;\r
-        \r
-        final boolean hasMaterial = materialButton.getSelection();\r
-        final Color ambientColor = ambientComposite.getBackground();\r
-        final Color diffuseColor = diffuseComposite.getBackground();\r
-        final Color specularColor = specularComposite.getBackground();\r
-        final Color emissiveColor = emissiveComposite.getBackground();\r
-        final double shininess = (double)specularSlider.getSelection();\r
-        final double transparency = (double)transparencySlider.getSelection()/ 100.0;\r
-        \r
-        getSession().asyncWrite(new GraphRequestAdapter() {\r
-               @Override\r
-               public GraphRequestStatus perform(Graph g) throws Exception {\r
-                       Appearance appearance = new Appearance(g,appearanceResource);\r
-                       if (hasMaterial) {\r
-                    Material m = appearance.getMaterial();\r
-                    if (m == null) {\r
-                        m = Material.createDefault(g);\r
-                    }\r
-                    org.simantics.proconf.g3d.stubs.Color aColor = m.getAmbientColor();\r
-                    org.simantics.proconf.g3d.stubs.Color dColor = m.getDiffuseColor();\r
-                    org.simantics.proconf.g3d.stubs.Color sColor = m.getSpecularColor();\r
-                    org.simantics.proconf.g3d.stubs.Color eColor = m.getEmissiveColor();\r
-                    AppearanceTools.setColor(aColor,ambientColor);\r
-                    AppearanceTools.setColor(dColor,diffuseColor);\r
-                    AppearanceTools.setColor(sColor, specularColor);\r
-                    AppearanceTools.setColor(eColor, emissiveColor);\r
-                    m.setShininess(shininess);\r
-                    m.setTransparency(transparency);\r
-                    appearance.setMaterial(m);\r
-                } else {\r
-                       appearance.removeRelatedStatements(Resources.g3dResource.HasMaterial);\r
-                }\r
-                       \r
-                       updating = false;\r
-                       return GraphRequestStatus.transactionComplete();\r
-               }\r
-        });\r
-        \r
-    }\r
-    \r
-    private void convertImage() {\r
-        updating = true;\r
-        getSession().syncWrite(new GraphRequestAdapter() {\r
-               @Override\r
-               public GraphRequestStatus perform(Graph g) throws Exception {\r
-                       Appearance appearance = new Appearance(g,appearanceResource);\r
-                       Texture t = appearance.getTexture();\r
-                if (textureComposites.size() == 1) {\r
-                    ImageTexture t2 = null;\r
-                    if (t != null && t.isInstanceOf(Resources.g3dResource.ImageTexture)) {\r
-                        t2 = new ImageTexture(t);\r
-                    } else {\r
-                        t2 = ImageTexture.createDefault(g);\r
-                        appearance.setTexture(t2);\r
-                    }\r
-                    final Resource mode = textureComposites.get(0).getModeType();\r
-                               \r
-\r
-                    if (mode != null)\r
-                        t2.setTextureMode(mode);\r
-                    textureComposites.get(0).getTexture(t2);\r
-                    \r
-                } else if (textureComposites.size() > 1) {\r
-                    MultiTexture mt = null;\r
-                    if (t != null\r
-                            && t.isInstanceOf(Resources.g3dResource.MultiTexture)) {\r
-                        mt = new MultiTexture(t);\r
-                    } else {\r
-                        mt = MultiTexture.createDefault(g);\r
-                        appearance.setTexture(mt);\r
-                    }\r
-                    StubLinkedList<IEntity> elements = new StubLinkedList<IEntity>(mt.getMultiTextureElementList());\r
-                    //PropertyTypeSet<MultiTextureElement> elements = mt.getMultiTextureElementSet();\r
-                    Iterator<IEntity> it = elements.iterator();\r
-                    for (int i = 0; i < textureComposites.size(); i++) {\r
-                        TextureComposite tc = textureComposites.get(i);\r
-                        \r
-                        ImageTexture tex = null;\r
-                        if (it.hasNext())\r
-                               tex = new ImageTexture(it.next());\r
-                        else {\r
-                               tex = ImageTexture.createDefault(g);\r
-                               elements.add(i,tex);\r
-                        }\r
-                        Resource mode = tc.getModeType();\r
-                        if (mode == null)\r
-                            tex.setTextureMode(Resources.g3dResource.CombineMode_modulate);\r
-                        else\r
-                            tex.setTextureMode(mode);\r
-                        \r
-                        textureComposites.get(i).getTexture(tex);\r
-                        \r
-                    }\r
-                } else {\r
-                    appearance.setTexture(null);\r
-                }\r
-          \r
-                updating = false;\r
-                       return GraphRequestStatus.transactionComplete();\r
-               }\r
-        });\r
-     \r
-            \r
-           \r
-        \r
-    }\r
-\r
-    private class TextureComposite extends Composite {\r
-        private Button textureGeneratorButton;\r
-        private Button sphereMapButton;\r
-        private Button eyeLinearButton;\r
-        private Button objectLinearButton;\r
-        private Button normalMapButton;\r
-        private Button reflectionMapButton;\r
-        \r
-        private Button modulateButton;\r
-        private Button replaceButton;\r
-        private Button decalButton;\r
-        private Button blendButton;\r
-        \r
-        \r
-        \r
-        private Button loadImageButton;\r
-        private ImageComposite imageComposite;\r
-        private Button removeButton;\r
-        \r
-        \r
-        public TextureComposite(Composite parent, int style) {\r
-            super(parent,style);\r
-            GridLayout layout = new GridLayout(2,false);\r
-            this.setLayout(layout);\r
-            \r
-            loadImageButton = toolkit.createButton(this, "Load Texture", SWT.PUSH);\r
-            loadImageButton.addSelectionListener(new SelectionAdapter() {\r
-                public void widgetSelected(SelectionEvent e) {\r
-\r
-                       IImage[] images = ImageUtils.loadImagesDialog(getSite().getShell(), false, ImageUtils.getImageFactories());\r
-                       if (images == null)\r
-                               return;\r
-                       IImage image = images[0];\r
-                       setImage(image);\r
-\r
-                }\r
-            });\r
-            GridData data = new GridData(SWT.LEFT,SWT.FILL,false,false,2,1);\r
-            \r
-            loadImageButton.setLayoutData(data);\r
-            data = new GridData(SWT.FILL,SWT.FILL,true,true,2,1);\r
-            imageComposite = new ImageComposite(this,SWT.BORDER);\r
-            imageComposite.setLayoutData(data);\r
-            \r
-            Composite texGenComposite = toolkit.createComposite(this, SWT.BORDER);\r
-            layout = new GridLayout(1,false);\r
-            texGenComposite.setLayout(layout);\r
-            data = new GridData(SWT.FILL,SWT.FILL,true,true,1,1);\r
-            data.heightHint = 140;\r
-            texGenComposite.setLayoutData(data);\r
-            textureGeneratorButton = toolkit.createButton(texGenComposite, "Has Texture Coordinate Generator", SWT.CHECK);\r
-            textureGeneratorButton.addSelectionListener(new SelectionAdapter() {\r
-                public void widgetSelected(SelectionEvent e) {\r
-                    sphereMapButton.setEnabled(textureGeneratorButton.getSelection());\r
-                    eyeLinearButton.setEnabled(textureGeneratorButton.getSelection());\r
-                    objectLinearButton.setEnabled(textureGeneratorButton.getSelection());\r
-                    normalMapButton.setEnabled(textureGeneratorButton.getSelection());\r
-                    reflectionMapButton.setEnabled(textureGeneratorButton.getSelection());\r
-                    \r
-                }\r
-            });\r
-            \r
-            sphereMapButton = toolkit.createButton(texGenComposite, "Shpere Map", SWT.RADIO);\r
-            sphereMapButton.addSelectionListener(new SelectionAdapter() {\r
-                public void widgetSelected(SelectionEvent e) {\r
-                    if (!sphereMapButton.getSelection()) {\r
-                        sphereMapButton.setSelection(true);\r
-                    } else {\r
-                        eyeLinearButton.setSelection(false);\r
-                        objectLinearButton.setSelection(false);\r
-                        normalMapButton.setSelection(false);\r
-                        reflectionMapButton.setSelection(false);\r
-                    }\r
-                }\r
-            });\r
-            eyeLinearButton = toolkit.createButton(texGenComposite, "Eye Linear", SWT.RADIO);\r
-            eyeLinearButton.addSelectionListener(new SelectionAdapter() {\r
-                public void widgetSelected(SelectionEvent e) {\r
-                    if (!eyeLinearButton.getSelection()) {\r
-                        eyeLinearButton.setSelection(true);\r
-                    } else {\r
-                        sphereMapButton.setSelection(false);\r
-                        objectLinearButton.setSelection(false);\r
-                        normalMapButton.setSelection(false);\r
-                        reflectionMapButton.setSelection(false);\r
-                    }\r
-                }\r
-            });\r
-            objectLinearButton = toolkit.createButton(texGenComposite, "Object Linear", SWT.RADIO);\r
-            objectLinearButton.addSelectionListener(new SelectionAdapter() {\r
-                public void widgetSelected(SelectionEvent e) {\r
-                    if (!objectLinearButton.getSelection()) {\r
-                        objectLinearButton.setSelection(true);\r
-                    } else {\r
-                        eyeLinearButton.setSelection(false);\r
-                        sphereMapButton.setSelection(false);\r
-                        normalMapButton.setSelection(false);\r
-                        reflectionMapButton.setSelection(false);\r
-                    }\r
-                }\r
-            });\r
-            normalMapButton = toolkit.createButton(texGenComposite, "Normal Map", SWT.RADIO);\r
-            normalMapButton.addSelectionListener(new SelectionAdapter() {\r
-                public void widgetSelected(SelectionEvent e) {\r
-                    if (!normalMapButton.getSelection()) {\r
-                        normalMapButton.setSelection(true);\r
-                    } else {\r
-                        eyeLinearButton.setSelection(false);\r
-                        objectLinearButton.setSelection(false);\r
-                        sphereMapButton.setSelection(false);\r
-                        reflectionMapButton.setSelection(false);\r
-                    }\r
-                }\r
-            });\r
-            reflectionMapButton = toolkit.createButton(texGenComposite, "Reflection Map", SWT.RADIO);\r
-            reflectionMapButton.addSelectionListener(new SelectionAdapter() {\r
-                public void widgetSelected(SelectionEvent e) {\r
-                    if (!reflectionMapButton.getSelection()) {\r
-                        reflectionMapButton.setSelection(true);\r
-                    } else {\r
-                        eyeLinearButton.setSelection(false);\r
-                        objectLinearButton.setSelection(false);\r
-                        normalMapButton.setSelection(false);\r
-                        sphereMapButton.setSelection(false);\r
-                    }\r
-                }\r
-            });\r
-            \r
-            Composite texModeComposite = toolkit.createComposite(this, SWT.BORDER);\r
-            texModeComposite.setLayout(layout);\r
-            texModeComposite.setLayoutData(data);\r
-            modulateButton = toolkit.createButton(texModeComposite, "Modulate", SWT.RADIO);\r
-            modulateButton.addSelectionListener(new SelectionAdapter() {\r
-                public void widgetSelected(SelectionEvent e) {\r
-                        modulateButton.setSelection(true);\r
-                        replaceButton.setSelection(false);\r
-                        blendButton.setSelection(false);\r
-                        decalButton.setSelection(false);\r
-\r
-                }\r
-            });\r
-            blendButton = toolkit.createButton(texModeComposite, "Blend", SWT.RADIO);\r
-            blendButton.addSelectionListener(new SelectionAdapter() {\r
-                public void widgetSelected(SelectionEvent e) {\r
-                        modulateButton.setSelection(false);\r
-                        replaceButton.setSelection(false);\r
-                        blendButton.setSelection(true);\r
-                        decalButton.setSelection(false);\r
-\r
-                }\r
-            });\r
-            replaceButton = toolkit.createButton(texModeComposite, "Replace", SWT.RADIO);\r
-            replaceButton.addSelectionListener(new SelectionAdapter() {\r
-                public void widgetSelected(SelectionEvent e) {\r
-                        modulateButton.setSelection(false);\r
-                        replaceButton.setSelection(true);\r
-                        blendButton.setSelection(false);\r
-                        decalButton.setSelection(false);\r
-\r
-                }\r
-            });\r
-            decalButton = toolkit.createButton(texModeComposite, "Decal", SWT.RADIO);\r
-            decalButton.addSelectionListener(new SelectionAdapter() {\r
-                public void widgetSelected(SelectionEvent e) {\r
-                        modulateButton.setSelection(false);\r
-                        replaceButton.setSelection(false);\r
-                        blendButton.setSelection(false);\r
-                        decalButton.setSelection(true);\r
-\r
-                }\r
-            });\r
-            \r
-            removeButton = toolkit.createButton(this, "Remove texture", SWT.PUSH);\r
-            parent.getParent().getParent().layout(true, true);\r
-        }\r
-        \r
-        public void setImage(IImage image) {\r
-            imageComposite.setImage(image);\r
-        }\r
-        \r
-        public IImage getImage() {\r
-            return imageComposite.getImage();\r
-        }\r
-        \r
-        public void update(ImageTexture t2) throws Exception {\r
-               Graph graph = t2.getGraph();\r
-            org.simantics.image.stubs.Image i = t2.getImage();\r
-            IImageFactory f = ImageUtils.getImageFactoryForResource(graph,i.getResource());\r
-            final IImage p = f.createImageForResource(graph,i.getResource());\r
-//            PixelDimension pd = p.getDimensions().getPixelDimension();\r
-//            if (pd==null) pd = AppearanceTools.DEFAULT_SIZE;\r
-//             final ImageData id = p.rasterize(pd.getWidth(), pd.getHeight());\r
-            \r
-            parent.getDisplay().asyncExec(new Runnable() {\r
-               @Override\r
-               public void run() {\r
-                       //Image im = new Image(AppearanceEditor.this.getBody().getDisplay(),id);\r
-                       //imageComposite.setImage(im);\r
-                    //showImage();\r
-                       setImage(p);\r
-\r
-               }\r
-            });\r
-            \r
-            TextureCoordinateGenerator gen = t2.getTextureCoordinateGenerator();\r
-            final boolean tg;\r
-            final boolean sm;\r
-            final boolean el;\r
-            final boolean ol;\r
-            final boolean nm;\r
-            final boolean rm;\r
-            if (gen == null) {\r
-               tg = false;\r
-               sm = false;\r
-               el = false;\r
-               ol = false;\r
-               nm = false;\r
-               rm = false;\r
-            } else {\r
-                //type = gen.getTextureCoordinateGeneratorTypeValue();\r
-                //textureGeneratorButton.setSelection(true);\r
-                tg = true;\r
-                if (gen.equals(Resources.g3dResource.TextureCoordinateGenerator_sphere)) {\r
-                       sm = true;\r
-                       el = false;\r
-                       ol = false;\r
-                       nm = false;\r
-                       rm = false;\r
-                } else if (gen.equals(Resources.g3dResource.TextureCoordinateGenerator_eyelinear)) {\r
-                       sm = false;\r
-                       el = true;\r
-                       ol = false;\r
-                       nm = false;\r
-                       rm = false;\r
-                } else if (gen.equals(Resources.g3dResource.TextureCoordinateGenerator_objectlinear)) {\r
-                       sm = false;\r
-                       el = false;\r
-                       ol = true;\r
-                       nm = false;\r
-                       rm = false;\r
-                } else if (gen.equals(Resources.g3dResource.TextureCoordinateGenerator_normal)) {\r
-                       sm = false;\r
-                       el = false;\r
-                       ol = false;\r
-                       nm = true;\r
-                       rm = false;\r
-                } else if (gen.equals(Resources.g3dResource.TextureCoordinateGenerator_reflection)) {\r
-                       sm = false;\r
-                       el = false;\r
-                       ol = false;\r
-                       nm = false;\r
-                       rm = true;\r
-                } else {\r
-                       sm = false;\r
-                       el = false;\r
-                       ol = false;\r
-                       nm = false;\r
-                       rm = false;\r
-                }\r
-                \r
-            }\r
-            \r
-            parent.getDisplay().asyncExec(new Runnable() {\r
-                       @Override\r
-                       public void run() {\r
-                               textureGeneratorButton.setSelection(tg);\r
-                               sphereMapButton.setSelection(sm);\r
-                               eyeLinearButton.setSelection(el);\r
-                               objectLinearButton.setSelection(ol);\r
-                               normalMapButton.setSelection(nm);\r
-                               reflectionMapButton.setSelection(rm);\r
-                               sphereMapButton.setEnabled(textureGeneratorButton.getSelection());\r
-                    eyeLinearButton.setEnabled(textureGeneratorButton.getSelection());\r
-                    objectLinearButton.setEnabled(textureGeneratorButton.getSelection());\r
-                    normalMapButton.setEnabled(textureGeneratorButton.getSelection());\r
-                    reflectionMapButton.setEnabled(textureGeneratorButton.getSelection());\r
-                               \r
-                       }\r
-               });\r
-        }\r
-        \r
-        \r
-        public Resource getGenType() {\r
-            if (sphereMapButton.getSelection())\r
-                return Resources.g3dResource.TextureCoordinateGenerator_sphere;\r
-            else if (eyeLinearButton.getSelection())\r
-               return Resources.g3dResource.TextureCoordinateGenerator_eyelinear;\r
-            else if (objectLinearButton.getSelection())\r
-               return Resources.g3dResource.TextureCoordinateGenerator_objectlinear;\r
-            else if (normalMapButton.getSelection())\r
-               return Resources.g3dResource.TextureCoordinateGenerator_normal;\r
-            else if (reflectionMapButton.getSelection())\r
-               return Resources.g3dResource.TextureCoordinateGenerator_reflection;\r
-            return null;\r
-        }\r
-        \r
-        public Resource getModeType() {\r
-            if (modulateButton.getSelection())\r
-                return Resources.g3dResource.MultiTextureMode_modulate;\r
-            else if (replaceButton.getSelection())\r
-               return Resources.g3dResource.MultiTextureMode_replace;\r
-            else if (blendButton.getSelection())\r
-               return Resources.g3dResource.MultiTextureMode_blend;\r
-            else if (decalButton.getSelection())\r
-               return Resources.g3dResource.MultiTextureMode_decal;\r
-\r
-            return null;\r
-        }\r
-        \r
-        public void getTexture(ImageTexture t2) throws Exception{\r
-               Graph g = t2.getGraph();\r
-               IImage image = getImage();\r
-               if (image != null) {\r
-                       Resource res = image.instantiateAsResource(g);\r
-                       t2.setImage(res);\r
-               }\r
-               final Resource t2res = t2.getResource();\r
-\r
-                       if (textureGeneratorButton.getSelection()) {\r
-                               final Resource type;\r
-                               if (sphereMapButton.getSelection())\r
-                                       type = Resources.g3dResource.TextureCoordinateGenerator_sphere;\r
-                               else if (eyeLinearButton.getSelection())\r
-                                       type = Resources.g3dResource.TextureCoordinateGenerator_eyelinear;\r
-                               else if (objectLinearButton.getSelection())\r
-                                       type = Resources.g3dResource.TextureCoordinateGenerator_objectlinear;\r
-                               else if (normalMapButton.getSelection())\r
-                                       type = Resources.g3dResource.TextureCoordinateGenerator_normal;\r
-                               else if (reflectionMapButton.getSelection())\r
-                                       type = Resources.g3dResource.TextureCoordinateGenerator_reflection;\r
-                               else\r
-                                       type = null;\r
-                               if (type != null) {\r
-                                       getSession().asyncWrite(new GraphRequestAdapter() {\r
-                                               @Override\r
-                                               public GraphRequestStatus perform(Graph g)\r
-                                                               throws Exception {\r
-                                                       ImageTexture t2 = new ImageTexture(g, t2res);\r
-                                                       t2.setTextureCoordinateGenerator(type);\r
-                                                       return GraphRequestStatus.transactionComplete();\r
-                                               }\r
-                                       });\r
-\r
-                               }\r
-\r
-                       }\r
-        }\r
-        \r
-        /*\r
-                * public void getTexture(ImageTexture t2) { if\r
-                * (imageComposite.getImage() != null) { ImageData data =\r
-                * imageComposite.getImage().getImageData(); if (!data.palette.isDirect) {\r
-                * throw new RuntimeException("Not direct"); } int bytes = 0; String\r
-                * type = ""; if (data.depth != 32 && data.depth != 24) { throw new\r
-                * UnsupportedOperationException("Cannot handle bitdepth " +\r
-                * data.depth); } if (data.depth == 32) { bytes = 4; type = "RGBA"; }\r
-                * else if (data.depth == 24) { bytes = 3; type = "RGB"; } String size =\r
-                * data.width + " " + data.height; byte texturedata[] = new\r
-                * byte[data.width * data.height * bytes]; for (int y = 0; y <\r
-                * data.height; y++) { for (int x = 0; x < data.width; x++) { int index =\r
-                * (y * data.width + x) * bytes;\r
-                * \r
-                * texturedata[index] = data.data[index]; texturedata[index + 1] =\r
-                * data.data[index + 1]; texturedata[index + 2] = data.data[index + 2];\r
-                * if (bytes == 4) texturedata[index + 3] = data.data[index + 3];\r
-                *  } } String base64 = new\r
-                * sun.misc.BASE64Encoder().encode(texturedata); // if\r
-                * (coreTC.getCurrentTransaction() == null)\r
-                * \r
-                * \r
-                * \r
-                * fi.vtt.proconf.threedimensionalmodeling.stub.v1_0.Image i =\r
-                * t2.getImage(); if (i == null) { i = ImageFactory.instantiate(graph);\r
-                * graph.commitChanges(this); t2.setImage(i); }\r
-                * i.setImageDataValue(base64); i.setImageTypeValue(type);\r
-                * i.setImageSizeValue(size); graph.commitChanges(this); if\r
-                * (textureGeneratorButton.getSelection()) { type = null; if\r
-                * (sphereMapButton.getSelection()) type =\r
-                * AppearanceTools.TEXTURE_COORD_GEN_SPHERE; else if\r
-                * (eyeLinearButton.getSelection()) type =\r
-                * AppearanceTools.TEXTURE_COORD_GEN_EYE_LINEAR; else if\r
-                * (objectLinearButton.getSelection()) type =\r
-                * AppearanceTools.TEXTURE_COORD_GEN_OBJECT_LINEAR; else if\r
-                * (normalMapButton.getSelection()) type =\r
-                * AppearanceTools.TEXTURE_COORD_GEN_NORMAL; else if\r
-                * (reflectionMapButton.getSelection()) type =\r
-                * AppearanceTools.TEXTURE_COORD_GEN_REFLECTION; else type = null; if\r
-                * (type != null) { TextureCoordinateGenerator gen =\r
-                * t2.getTextureCoordinateGenerator(); if (gen == null) { gen =\r
-                * TextureCoordinateGeneratorFactory.instantiate(graph);\r
-                * graph.commitChanges(this); t2.setTextureCoordinateGenerator(gen); }\r
-                * gen.setTextureCoordinateGeneratorTypeValue(type);\r
-                * graph.commitChanges(this); }\r
-                *  } else { //t2.setTextureCoordinateGenerator(null);\r
-                * graph.commitChanges(this); }\r
-                *  } }\r
-                */\r
-    }\r
-}\r