/** * Copyright 2010 JBoss Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.drools.eclipse.flow.ruleflow.editor; /* * Copyright 2006 JBoss Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import org.drools.eclipse.DroolsEclipsePlugin; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.text.DocumentEvent; import org.eclipse.jface.text.IDocumentListener; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IEditorSite; import org.eclipse.ui.PartInitException; import org.eclipse.ui.editors.text.TextEditor; import org.eclipse.ui.forms.editor.FormEditor; /** * This is a multi table editor wrapper for both the text editor and the flow * chart. * * @author <a href="mailto:kris_verlaenen@hotmail.com">Kris Verlaenen</a> */ public class RuleFlowModelEditor2 extends FormEditor { private RuleFlowModelEditor editor; private TextEditor xmlEditor; public void init(IEditorSite site, IEditorInput input) throws PartInitException { super.init(site, input); setPartName(input.getName()); } protected void addPages() { try { editor = new RuleFlowModelEditor(); xmlEditor = new TextEditor() { public boolean isEditable() { return false; } public void close(boolean save) { super.close(save); RuleFlowModelEditor2.this.close(save); } protected void setPartName(String partName) { super.setPartName(partName); RuleFlowModelEditor2.this.setPartName(partName); } }; int graph = addPage(editor, getEditorInput()); int xml = addPage(xmlEditor, getEditorInput()); setPageText(graph, "Graph"); setPageText(xml, "XML"); xmlEditor.getDocumentProvider().getDocument(getEditorInput()) .addDocumentListener(new IDocumentListener() { public void documentAboutToBeChanged(DocumentEvent event) { } public void documentChanged(DocumentEvent event) { editor.setInput(getEditorInput()); } }); } catch (PartInitException e) { DroolsEclipsePlugin.log(e); } } public void doSave(IProgressMonitor monitor) { editor.doSave(monitor); setInput(getEditorInput()); } public void doSaveAs() { editor.doSaveAs(); } public boolean isSaveAsAllowed() { return editor.isSaveAsAllowed(); } public Object getAdapter(Class adapter) { return editor.getAdapter(adapter); } // public void setFocus() { // if (getActivePage() == 0) { // try { // String content = xmlEditor.getDocumentProvider().getDocument(getEditorInput()).get(); // PackageBuilderConfiguration configuration = new PackageBuilderConfiguration(); // XmlProcessReader xmlReader = new XmlProcessReader( configuration.getSemanticModules() ); // final String isValidatingString = System.getProperty("drools.schema.validating"); // System.setProperty("drools.schema.validating", "true"); // RuleFlowProcess process = (RuleFlowProcess) xmlReader.read(new StringReader(content)); // System.setProperty("drools.schema.validating", isValidatingString); // if (process != null) { // xmlEditor.doSave(null); // editor.setInput(getEditorInput()); // } // } catch (Throwable t) { // DroolsEclipsePlugin.log(t); // handleError(t); // setActivePage(1); // } // } else if (getActivePage() == 1) { // editor.doSave(null); // xmlEditor.setInput(getEditorInput()); // } // super.setFocus(); // } // private void handleError(Throwable t) { // DroolsEclipsePlugin.log(t); // Throwable cause = t.getCause(); // if (cause == null) { // cause = t; // } // String message = cause.getClass().getName() + ": " + cause.getMessage(); // if (message == null || message.length() == 0) { // message = "Uncategorized Error!"; // } // IStatus status = new Status(IStatus.ERROR, DroolsEclipsePlugin // .getUniqueIdentifier(), -1, message, null); // ErrorDialog.openError(getSite().getShell(), "Rete Tree Build Error!", // "Unable to parse XML!", status); // // } }