Author: DartPeng
Date: 2009-05-13 04:45:40 -0400 (Wed, 13 May 2009)
New Revision: 15237
Added:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/command/
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/command/UnSetFeatureCommand.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/ClassFieldEditorValidator.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/ISmooksModelValidateListener.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/ISmooksValidator.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/SmooksModelValidator.java
Removed:
trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/validate/ISmooksModelValidateListener.java
trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/validate/SmooksModelValidator.java
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.core/META-INF/MANIFEST.MF
trunk/smooks/plugins/org.jboss.tools.smooks.ui/plugin.xml
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/actions/ValidateSmooksAction.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksConfigurationFormPage.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksMultiFormEditor.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksStuffPropertyDetailPage.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/uitls/SmooksUIUtils.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/SmooksMarkerHelper.java
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/ValidateResultLabelDecorator.java
Log:
JBIDE-4232
Change problem's type name and add new validator to validate class name of
BindingsType
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.core/META-INF/MANIFEST.MF
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.core/META-INF/MANIFEST.MF 2009-05-12
20:02:47 UTC (rev 15236)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.core/META-INF/MANIFEST.MF 2009-05-13
08:45:40 UTC (rev 15237)
@@ -76,7 +76,6 @@
org.jboss.tools.smooks.model.smooks.impl,
org.jboss.tools.smooks.model.smooks.provider,
org.jboss.tools.smooks.model.smooks.util,
- org.jboss.tools.smooks.model.validate,
org.jboss.tools.smooks.model.xsl,
org.jboss.tools.smooks.model.xsl.impl,
org.jboss.tools.smooks.model.xsl.provider,
Deleted:
trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/validate/ISmooksModelValidateListener.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/validate/ISmooksModelValidateListener.java 2009-05-12
20:02:47 UTC (rev 15236)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/validate/ISmooksModelValidateListener.java 2009-05-13
08:45:40 UTC (rev 15237)
@@ -1,8 +0,0 @@
-package org.jboss.tools.smooks.model.validate;
-
-import org.eclipse.emf.common.util.Diagnostic;
-
-public interface ISmooksModelValidateListener {
- void validateStart();
- void validateEnd(Diagnostic diagnosticResult);
-}
Deleted:
trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/validate/SmooksModelValidator.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/validate/SmooksModelValidator.java 2009-05-12
20:02:47 UTC (rev 15236)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.core/src/org/jboss/tools/smooks/model/validate/SmooksModelValidator.java 2009-05-13
08:45:40 UTC (rev 15237)
@@ -1,179 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 Red Hat, Inc.
- * Distributed under license by Red Hat, Inc. All rights reserved.
- * This program is made available under the terms of the
- * Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at
http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Red Hat, Inc. - initial API and implementation
- ******************************************************************************/
-package org.jboss.tools.smooks.model.validate;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.emf.common.util.Diagnostic;
-import org.eclipse.emf.common.util.DiagnosticChain;
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.util.Diagnostician;
-import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
-import org.eclipse.emf.edit.domain.EditingDomain;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
-import org.eclipse.swt.widgets.Display;
-
-/**
- * @author Dart (dpeng(a)redhat.com)
- * <p>
- * Apr 14, 2009
- */
-public class SmooksModelValidator {
-
- Collection<?> selectedObjects;
- EditingDomain domain;
- private boolean starting = false;
- private boolean waiting = false;
- private Object lock = new Object();
-
- private long watingTime = 300;
-
- private List<ISmooksModelValidateListener> listeners = new
ArrayList<ISmooksModelValidateListener>();
-
- public SmooksModelValidator(Collection<?> selectedObjects, EditingDomain domain)
{
- this.selectedObjects = selectedObjects;
- this.domain = domain;
- }
-
- public SmooksModelValidator() {
-
- }
-
- public void addValidateListener(ISmooksModelValidateListener l) {
- if (!listeners.contains(l))
- listeners.add(l);
- }
-
- public void removeValidateListener(ISmooksModelValidateListener l) {
- listeners.remove(l);
- }
-
- public Diagnostic validate(Collection<?> selectedObjects, EditingDomain
editingDomain) {
- this.selectedObjects = selectedObjects;
- domain = editingDomain;
- return validate(new NullProgressMonitor());
- }
-
- public Diagnostic validate(final IProgressMonitor progressMonitor) {
- EObject eObject = (EObject) selectedObjects.iterator().next();
- int count = 0;
- for (Iterator<?> i = eObject.eAllContents(); i.hasNext(); i.next()) {
- ++count;
- }
-
- progressMonitor.beginTask("", count);
-
- final AdapterFactory adapterFactory = domain instanceof AdapterFactoryEditingDomain ?
((AdapterFactoryEditingDomain) domain)
- .getAdapterFactory()
- : null;
-
- Diagnostician diagnostician = new Diagnostician() {
- @Override
- public String getObjectLabel(EObject eObject) {
- if (adapterFactory != null && !eObject.eIsProxy()) {
- IItemLabelProvider itemLabelProvider = (IItemLabelProvider)
adapterFactory.adapt(eObject,
- IItemLabelProvider.class);
- if (itemLabelProvider != null) {
- return itemLabelProvider.getText(eObject);
- }
- }
-
- return super.getObjectLabel(eObject);
- }
-
- @Override
- public boolean validate(EClass eClass, EObject eObject, DiagnosticChain diagnostics,
- Map<Object, Object> context) {
- progressMonitor.worked(1);
- return super.validate(eClass, eObject, diagnostics, context);
- }
- };
-
- progressMonitor.setTaskName("Validating...");
-
- return diagnostician.validate(eObject);
- }
-
- public void startValidate(final Collection<?> selectedObjects, final EditingDomain
editingDomain) {
- if (starting) {
- synchronized (lock) {
- waiting = true;
- }
- return;
- }
- Thread thread = new Thread() {
- public void run() {
- synchronized (lock) {
- starting = true;
- waiting = true;
- }
- while (waiting) {
- try {
- waiting = false;
- Thread.sleep(watingTime);
- Thread.yield();
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- try {
- for (Iterator<?> iterator = listeners.iterator(); iterator.hasNext();) {
- final ISmooksModelValidateListener l = (ISmooksModelValidateListener)
iterator.next();
- Display.getDefault().syncExec(new Runnable() {
-
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Runnable#run()
- */
- public void run() {
- l.validateStart();
- }
-
- });
-
- }
-
- final Diagnostic d = validate(selectedObjects, editingDomain);
-
- for (Iterator<?> iterator = listeners.iterator(); iterator.hasNext();) {
- final ISmooksModelValidateListener l = (ISmooksModelValidateListener)
iterator.next();
- Display.getDefault().syncExec(new Runnable() {
-
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Runnable#run()
- */
- public void run() {
- l.validateEnd(d);
- }
-
- });
- }
- } finally {
- waiting = false;
- starting = false;
- }
- }
- };
- thread.setName("Validate Smooks model");
- thread.start();
- }
-}
Modified: trunk/smooks/plugins/org.jboss.tools.smooks.ui/plugin.xml
===================================================================
--- trunk/smooks/plugins/org.jboss.tools.smooks.ui/plugin.xml 2009-05-12 20:02:47 UTC (rev
15236)
+++ trunk/smooks/plugins/org.jboss.tools.smooks.ui/plugin.xml 2009-05-13 08:45:40 UTC (rev
15237)
@@ -66,5 +66,19 @@
</enablement>
</decorator>
</extension>
+ <extension
+ id="problem"
+ name="Smooks Problem"
+ point="org.eclipse.core.resources.markers">
+ <persistent
+ value="true">
+ </persistent>
+ <super
+ type="org.eclipse.core.resources.problemmarker">
+ </super>
+ <attribute
+ name="uri">
+ </attribute>
+ </extension>
</plugin>
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/actions/ValidateSmooksAction.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/actions/ValidateSmooksAction.java 2009-05-12
20:02:47 UTC (rev 15236)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/actions/ValidateSmooksAction.java 2009-05-13
08:45:40 UTC (rev 15237)
@@ -11,6 +11,8 @@
package org.jboss.tools.smooks.configuration.actions;
import java.lang.reflect.InvocationTargetException;
+import java.util.Collections;
+import java.util.Iterator;
import java.util.List;
import org.eclipse.core.runtime.IProgressMonitor;
@@ -31,7 +33,7 @@
import org.eclipse.ui.part.ISetSelectionTarget;
import org.jboss.tools.smooks.configuration.SmooksConfigurationActivator;
import org.jboss.tools.smooks.configuration.validate.SmooksMarkerHelper;
-import org.jboss.tools.smooks.model.validate.SmooksModelValidator;
+import org.jboss.tools.smooks.configuration.validate.SmooksModelValidator;
/**
* @author Dart (dpeng(a)redhat.com)
@@ -54,16 +56,24 @@
public void run(final IProgressMonitor progressMonitor) throws
InvocationTargetException,
InterruptedException {
try {
- final Diagnostic diagnostic = validate(progressMonitor);
- shell.getDisplay().asyncExec(new Runnable() {
- public void run() {
- if (progressMonitor.isCanceled()) {
- handleDiagnostic(Diagnostic.CANCEL_INSTANCE);
- } else {
- handleDiagnostic(diagnostic);
+ List<Diagnostic> lists = validate(progressMonitor);
+ Resource resource = editingDomain.getResourceSet().getResources().get(0);
+ if (resource != null) {
+ markerHelper.deleteMarkers(resource);
+ }
+ for (Iterator<?> iterator = lists.iterator(); iterator.hasNext();) {
+ final Diagnostic diagnostic = (Diagnostic) iterator.next();
+ shell.getDisplay().asyncExec(new Runnable() {
+ public void run() {
+ if (progressMonitor.isCanceled()) {
+ handleDiagnostic(Diagnostic.CANCEL_INSTANCE);
+ } else {
+ handleDiagnostic(diagnostic);
+ }
}
- }
- });
+ });
+ }
+
} finally {
progressMonitor.done();
}
@@ -85,67 +95,28 @@
}
protected void handleDiagnostic(Diagnostic diagnostic) {
- int severity = diagnostic.getSeverity();
- String title = null;
- String message = null;
-
- if (severity == Diagnostic.ERROR || severity == Diagnostic.WARNING) {
- title = "Error";
- message = "Validate Messages";
- } else {
- title = "Information";
- message = "Validate success";
- }
-
- int result = 0;
+
if (diagnostic.getSeverity() == Diagnostic.OK) {
-// MessageDialog.openInformation(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
title,
-// message);
-// result = Window.CANCEL;
return;
} else {
- result =
DiagnosticDialog.open(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
title,
- message, diagnostic);
}
if (markerHelper != null) {
- Resource resource = editingDomain.getResourceSet().getResources().get(0);
- if (resource != null) {
- markerHelper.deleteMarkers(resource);
- }
- if (result == Window.OK) {
- if (!diagnostic.getChildren().isEmpty()) {
- List<?> data = (diagnostic.getChildren().get(0)).getData();
- if (!data.isEmpty() && data.get(0) instanceof EObject) {
- Object part = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
- .getActivePart();
- if (part instanceof ISetSelectionTarget) {
- ((ISetSelectionTarget) part).selectReveal(new StructuredSelection(data.get(0)));
- } else if (part instanceof IViewerProvider) {
- Viewer viewer = ((IViewerProvider) part).getViewer();
- if (viewer != null) {
- viewer.setSelection(new StructuredSelection(data.get(0)), true);
- }
- }
- }
+ if (resource != null) {
+ for (Diagnostic childDiagnostic : diagnostic.getChildren()) {
+ markerHelper.createMarkers(resource, childDiagnostic);
}
-
- if (resource != null) {
- for (Diagnostic childDiagnostic : diagnostic.getChildren()) {
- markerHelper.createMarkers(resource, childDiagnostic);
- }
- }
}
}
}
- protected Diagnostic validate(IProgressMonitor progressMonitor) {
+ protected List<Diagnostic> validate(IProgressMonitor progressMonitor) {
if (resource != null && editingDomain != null) {
validator = new SmooksModelValidator(resource.getContents(), editingDomain);
return validator.validate(progressMonitor);
}
- return Diagnostic.OK_INSTANCE;
+ return Collections.emptyList();
}
public Resource getResource() {
Added:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/command/UnSetFeatureCommand.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/command/UnSetFeatureCommand.java
(rev 0)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/command/UnSetFeatureCommand.java 2009-05-13
08:45:40 UTC (rev 15237)
@@ -0,0 +1,96 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.smooks.configuration.command;
+
+import org.eclipse.emf.common.command.AbstractCommand;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * @author Dart (dpeng(a)redhat.com)
+ *
+ */
+public class UnSetFeatureCommand extends AbstractCommand implements Command {
+
+ private EObject model;
+
+ private EStructuralFeature attribute;
+
+ private Object oldValue;
+
+ public UnSetFeatureCommand(EObject model, EStructuralFeature attribute) {
+ super();
+ this.model = model;
+ this.attribute = attribute;
+ this.setLabel("UnSet attribute \"" + this.attribute.getName() +
"\"");
+ }
+
+ public UnSetFeatureCommand(String label, String description) {
+ super(label, description);
+ }
+
+ public UnSetFeatureCommand(String label) {
+ super(label);
+ }
+
+ public UnSetFeatureCommand(IItemPropertyDescriptor pd, Object model) {
+ this((EObject) model, (EStructuralFeature) pd.getFeature(model));
+ }
+
+ public void execute() {
+ if (model != null && attribute != null) {
+ oldValue = model.eGet(attribute);
+ model.eUnset(attribute);
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.emf.common.command.AbstractCommand#prepare()
+ */
+ @Override
+ protected boolean prepare() {
+ if (model != null && attribute != null)
+ return true;
+ return false;
+ }
+
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.emf.common.command.AbstractCommand#canUndo()
+ */
+ @Override
+ public boolean canUndo() {
+ return prepare() && (oldValue != null);
+ }
+
+ public void redo() {
+ execute();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.emf.common.command.AbstractCommand#undo()
+ */
+ @Override
+ public void undo() {
+ if (model != null && attribute != null) {
+ if (oldValue != null) {
+ model.eSet(attribute, oldValue);
+ }
+ }
+ }
+}
Property changes on:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/command/UnSetFeatureCommand.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksConfigurationFormPage.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksConfigurationFormPage.java 2009-05-12
20:02:47 UTC (rev 15236)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksConfigurationFormPage.java 2009-05-13
08:45:40 UTC (rev 15237)
@@ -44,12 +44,12 @@
import org.jboss.tools.smooks.configuration.SmooksConfigurationActivator;
import
org.jboss.tools.smooks.configuration.editors.wizard.IStructuredDataSelectionWizard;
import
org.jboss.tools.smooks.configuration.editors.wizard.StructuredDataSelectionWizard;
+import org.jboss.tools.smooks.configuration.validate.ISmooksModelValidateListener;
import org.jboss.tools.smooks.model.graphics.ext.InputType;
import org.jboss.tools.smooks.model.graphics.ext.ParamType;
import org.jboss.tools.smooks.model.graphics.ext.SmooksGraphicsExtFactory;
import org.jboss.tools.smooks.model.graphics.ext.SmooksGraphicsExtType;
import org.jboss.tools.smooks.model.smooks.DocumentRoot;
-import org.jboss.tools.smooks.model.validate.ISmooksModelValidateListener;
import org.jboss.tools.smooks10.model.smooks.util.SmooksModelUtils;
/**
@@ -286,7 +286,7 @@
}
}
- public void validateEnd(Diagnostic diagnosticResult) {
+ public void validateEnd(List<Diagnostic> diagnosticResult) {
}
public void validateStart() {
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksMultiFormEditor.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksMultiFormEditor.java 2009-05-12
20:02:47 UTC (rev 15236)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksMultiFormEditor.java 2009-05-13
08:45:40 UTC (rev 15237)
@@ -61,6 +61,9 @@
import org.jboss.tools.smooks.configuration.SmooksConfigurationActivator;
import org.jboss.tools.smooks.configuration.SmooksConstants;
import org.jboss.tools.smooks.configuration.editors.uitls.SmooksUIUtils;
+import org.jboss.tools.smooks.configuration.validate.ISmooksModelValidateListener;
+import org.jboss.tools.smooks.configuration.validate.SmooksMarkerHelper;
+import org.jboss.tools.smooks.configuration.validate.SmooksModelValidator;
import org.jboss.tools.smooks.configuration.wizards.SmooksConfigurationFileNewWizard;
import org.jboss.tools.smooks.model.calc.provider.CalcItemProviderAdapterFactory;
import org.jboss.tools.smooks.model.common.provider.CommonItemProviderAdapterFactory;
@@ -78,8 +81,6 @@
import org.jboss.tools.smooks.model.json.provider.JsonItemProviderAdapterFactory;
import org.jboss.tools.smooks.model.medi.provider.MEdiItemProviderAdapterFactory;
import org.jboss.tools.smooks.model.smooks.provider.SmooksItemProviderAdapterFactory;
-import org.jboss.tools.smooks.model.validate.ISmooksModelValidateListener;
-import org.jboss.tools.smooks.model.validate.SmooksModelValidator;
import org.jboss.tools.smooks.model.xsl.provider.XslItemProviderAdapterFactory;
import org.jboss.tools.smooks10.model.smooks.util.SmooksResourceFactoryImpl;
@@ -87,7 +88,7 @@
*
* @author Dart Peng (dpeng(a)redhat.com) Date Apr 1, 2009
*/
-public class SmooksMultiFormEditor extends FormEditor implements IEditingDomainProvider ,
ISmooksModelValidateListener{
+public class SmooksMultiFormEditor extends FormEditor implements IEditingDomainProvider,
ISmooksModelValidateListener {
public static final String EDITOR_ID =
"org.jboss.tools.smooks.configuration.editors.MultiPageEditor";
@@ -102,15 +103,17 @@
private PropertySheetPage propertySheetPage = null;
private SmooksGraphicsExtType smooksGraphicsExt = null;
-
+
private SmooksModelValidator validator = null;
private EObject smooksModel;
private boolean handleEMFModelChange;
-
- private Diagnostic diagnostic;
+ private SmooksMarkerHelper markerHelper = new SmooksMarkerHelper();
+
+ private List<Diagnostic> diagnosticList;
+
public SmooksMultiFormEditor() {
super();
initEditingDomain();
@@ -161,9 +164,9 @@
int length = oldEndIndex - startIndex + 1;
handleEMFModelChange = true;
document.replace(startIndex, length, replacement);
-
+
validator.startValidate(smooksModel.eResource().getContents(), editingDomain);
-
+
} catch (Exception exception) {
SmooksConfigurationActivator.getDefault().log(exception);
}
@@ -225,12 +228,12 @@
configurationPage.setSelectionToViewer(newList);
}
}
-
- public void addValidateListener(ISmooksModelValidateListener listener){
+
+ public void addValidateListener(ISmooksModelValidateListener listener) {
validator.addValidateListener(listener);
}
-
- public void removeValidateListener(ISmooksModelValidateListener listener){
+
+ public void removeValidateListener(ISmooksModelValidateListener listener) {
validator.removeValidateListener(listener);
}
@@ -331,7 +334,7 @@
SmooksConfigurationActivator.getDefault().log(e);
}
configurationPage.setSmooksModel(this.smooksModel);
-
+
validator.startValidate(smooksModel.eResource().getContents(), editingDomain);
}
@@ -398,11 +401,11 @@
}
editingDomain.getResourceSet().getResources().add(smooksResource);
super.init(site, input);
-
+
validator = new SmooksModelValidator();
addValidateListener(this);
- setDiagnostic(validator.validate(smooksModel.eResource().getContents(),
editingDomain));
-
+ setDiagnosticList(validator.validate(smooksModel.eResource().getContents(),
editingDomain));
+
// if success to open editor , check if there isn't ext file and create
// a new one
String extFileName = file.getName() +
SmooksConstants.SMOOKS_GRAPHICSEXT_EXTENTION_NAME_WITHDOT;
@@ -462,15 +465,31 @@
/**
* @return the diagnostic
*/
- public Diagnostic getDiagnostic() {
- return diagnostic;
+ public List<Diagnostic> getDiagnosticList() {
+ return diagnosticList;
}
/**
- * @param diagnostic the diagnostic to set
+ * @param diagnosticList
+ * the diagnostic to set
*/
- public void setDiagnostic(Diagnostic diagnostic) {
- this.diagnostic = diagnostic;
+ public void setDiagnosticList(List<Diagnostic> d) {
+ this.diagnosticList = d;
+
+ if (markerHelper != null) {
+ Resource resource = editingDomain.getResourceSet().getResources().get(0);
+ if (resource != null) {
+ markerHelper.deleteMarkers(resource);
+ }
+ for (Iterator<?> iterator = d.iterator(); iterator.hasNext();) {
+ Diagnostic diagnostic = (Diagnostic) iterator.next();
+ if (resource != null && diagnostic.getSeverity() != Diagnostic.OK) {
+ for (Diagnostic childDiagnostic : diagnostic.getChildren()) {
+ markerHelper.createMarkers(resource, childDiagnostic);
+ }
+ }
+ }
+ }
}
/*
@@ -482,12 +501,12 @@
return false;
}
- public void validateEnd(Diagnostic diagnosticResult) {
- setDiagnostic(diagnosticResult);
+ public void validateEnd(List<Diagnostic> diagnosticResult) {
+ setDiagnosticList(diagnosticResult);
}
public void validateStart() {
-
+
}
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksStuffPropertyDetailPage.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksStuffPropertyDetailPage.java 2009-05-12
20:02:47 UTC (rev 15236)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/SmooksStuffPropertyDetailPage.java 2009-05-13
08:45:40 UTC (rev 15237)
@@ -45,8 +45,8 @@
import org.eclipse.ui.forms.widgets.Section;
import org.jboss.tools.smooks.configuration.editors.uitls.IModelProcsser;
import org.jboss.tools.smooks.configuration.editors.uitls.SmooksUIUtils;
+import org.jboss.tools.smooks.configuration.validate.ISmooksModelValidateListener;
import org.jboss.tools.smooks.model.common.AbstractAnyType;
-import org.jboss.tools.smooks.model.validate.ISmooksModelValidateListener;
/**
*
@@ -146,20 +146,23 @@
detailsComposite.pack();
propertyMainComposite.layout();
- markPropertyUI(formEditor.getDiagnostic());
+ markPropertyUI(formEditor.getDiagnosticList());
} catch (Exception e) {
e.printStackTrace();
}
}
- protected void markPropertyUI(Diagnostic diagnostic) {
+ protected void markPropertyUI(List<Diagnostic> diagnosticList) {
for (Iterator<?> iterator = currentPropertyUIMap.values().iterator();
iterator.hasNext();) {
AttributeFieldEditPart editPart = (AttributeFieldEditPart) iterator.next();
if (editPart.getFieldMarker() != null) {
editPart.getFieldMarker().clean();
}
}
- markErrorWarningPropertyUI(diagnostic);
+ for (Iterator<?> iterator = diagnosticList.iterator(); iterator.hasNext();) {
+ Diagnostic diagnostic = (Diagnostic) iterator.next();
+ markErrorWarningPropertyUI(diagnostic);
+ }
}
protected void markErrorWarningPropertyUI(Diagnostic diagnostic) {
@@ -183,15 +186,20 @@
IFieldMarker marker = editPart.getFieldMarker();
if (marker == null)
return;
- marker.setMessage(diagnostic.getMessage());
+
if (diagnostic.getSeverity() == Diagnostic.ERROR) {
- if (marker.getMarkerType() != IFieldMarker.TYPE_ERROR)
+ if (marker.getMarkerType() != IFieldMarker.TYPE_ERROR) {
marker.setMarkerType(IFieldMarker.TYPE_ERROR);
+ marker.setMessage(diagnostic.getMessage());
+ }
}
-
if (diagnostic.getSeverity() == Diagnostic.WARNING) {
- if (marker.getMarkerType() != IFieldMarker.TYPE_WARINING)
+ // if there is error already , don't mark warning
+ if (marker.getMarkerType() != IFieldMarker.TYPE_WARINING
+ && marker.getMarkerType() != IFieldMarker.TYPE_ERROR) {
marker.setMarkerType(IFieldMarker.TYPE_WARINING);
+ marker.setMessage(diagnostic.getMessage());
+ }
}
}
}
@@ -469,7 +477,7 @@
this.isStale = isStale;
}
- public void validateEnd(Diagnostic diagnosticResult) {
+ public void validateEnd(List<Diagnostic> diagnosticResult) {
markPropertyUI(diagnosticResult);
}
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/uitls/SmooksUIUtils.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/uitls/SmooksUIUtils.java 2009-05-12
20:02:47 UTC (rev 15236)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/editors/uitls/SmooksUIUtils.java 2009-05-13
08:45:40 UTC (rev 15237)
@@ -33,6 +33,7 @@
import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
import org.eclipse.emf.edit.domain.EditingDomain;
import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
import org.eclipse.emf.edit.provider.ItemPropertyDescriptor.PropertyValueWrapper;
import org.eclipse.jdt.core.IClasspathEntry;
import org.eclipse.jdt.core.IJavaElement;
@@ -78,6 +79,7 @@
import org.eclipse.ui.part.FileEditorInput;
import org.jboss.tools.smooks.configuration.SmooksConfigurationActivator;
import org.jboss.tools.smooks.configuration.actions.OpenEditorEditInnerContentsAction;
+import org.jboss.tools.smooks.configuration.command.UnSetFeatureCommand;
import org.jboss.tools.smooks.configuration.editors.AttributeFieldEditPart;
import org.jboss.tools.smooks.configuration.editors.ClassPathFileProcessor;
import org.jboss.tools.smooks.configuration.editors.CurrentProjecViewerFilter;
@@ -152,17 +154,17 @@
displayName = itemPropertyDescriptor.getDisplayName(model);
EAttribute feature = (EAttribute) itemPropertyDescriptor.getFeature(model);
if (feature.isRequired()) {
- displayName = displayName + "*";
+ displayName = displayName + "*";
}
}
Composite labelComposite = formToolKit.createComposite(parent);
-// GridLayout layout = new GridLayout();
-// layout.numColumns = 2;
-// layout.marginLeft = 0;
-// layout.marginRight = 0;
-// layout.horizontalSpacing = 0;
+ // GridLayout layout = new GridLayout();
+ // layout.numColumns = 2;
+ // layout.marginLeft = 0;
+ // layout.marginRight = 0;
+ // layout.horizontalSpacing = 0;
labelComposite.setLayout(new FillLayout());
-// GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+ // GridData gd = new GridData(GridData.FILL_HORIZONTAL);
Control labelControl = null;
if (!isLink) {
@@ -173,19 +175,20 @@
Hyperlink link = formToolKit.createHyperlink(labelComposite, displayName + "
:", SWT.NONE);
labelControl = link;
}
-// gd = new GridData();
-// labelControl.setLayoutData(gd);
+ // gd = new GridData();
+ // labelControl.setLayoutData(gd);
-// FieldMarkerComposite notificationComposite = new FieldMarkerComposite(labelComposite,
SWT.NONE);
-// gd = new GridData();
-// gd.heightHint = 8;
-// gd.widthHint = 8;
-// gd.horizontalAlignment = GridData.BEGINNING;
-// gd.verticalAlignment = GridData.BEGINNING;
-// notificationComposite.setLayoutData(gd);
+ // FieldMarkerComposite notificationComposite = new
+ // FieldMarkerComposite(labelComposite, SWT.NONE);
+ // gd = new GridData();
+ // gd.heightHint = 8;
+ // gd.widthHint = 8;
+ // gd.horizontalAlignment = GridData.BEGINNING;
+ // gd.verticalAlignment = GridData.BEGINNING;
+ // notificationComposite.setLayoutData(gd);
wrapper.setLabelControl(labelControl);
-// wrapper.setMarker(notificationComposite);
+ // wrapper.setMarker(notificationComposite);
return wrapper;
}
@@ -436,7 +439,7 @@
layout.marginRight = 0;
layout.horizontalSpacing = 0;
tcom.setLayout(layout);
-
+
FieldMarkerComposite notificationComposite = new FieldMarkerComposite(tcom, SWT.NONE);
gd = new GridData();
gd.heightHint = 8;
@@ -445,16 +448,16 @@
gd.verticalAlignment = GridData.BEGINNING;
notificationComposite.setLayoutData(gd);
fieldEditPart.setFieldMarker(notificationComposite);
-
+
final Text valueText = toolkit.createText(tcom, "", textType);
gd = new GridData(GridData.FILL_HORIZONTAL);
if (multiText && height > 0) {
gd.heightHint = height;
}
valueText.setLayoutData(gd);
-
+
tcom.setLayoutData(gd);
-
+
toolkit.paintBordersFor(textContainer);
if (openFile) {
Button fileBrowseButton = toolkit.createButton(textContainer, "Browse",
SWT.NONE);
@@ -480,7 +483,11 @@
});
}
- if (editValue != null) {
+ boolean valueIsSet = true;
+ if (model != null && model instanceof EObject && itemPropertyDescriptor
!= null) {
+ valueIsSet = ((EObject) model).eIsSet((EAttribute)
itemPropertyDescriptor.getFeature(model));
+ }
+ if (editValue != null && valueIsSet) {
valueText.setText(editValue);
if (editValue.length() > 0 && section != null) {
section.setExpanded(true);
@@ -639,7 +646,7 @@
fillLayout.marginHeight = 0;
fillLayout.marginWidth = 0;
classTextComposite.setLayout(fillLayout);
-
+
Composite tcom = toolkit.createComposite(classTextComposite);
GridLayout layout = new GridLayout();
layout.numColumns = 2;
@@ -647,7 +654,7 @@
layout.marginRight = 0;
layout.horizontalSpacing = 0;
tcom.setLayout(layout);
-
+
FieldMarkerComposite notificationComposite = new FieldMarkerComposite(tcom,
SWT.NONE);
gd = new GridData();
gd.heightHint = 8;
@@ -656,10 +663,9 @@
gd.verticalAlignment = GridData.BEGINNING;
notificationComposite.setLayoutData(gd);
editpart.setFieldMarker(notificationComposite);
-
-
- final SearchComposite searchComposite = new SearchComposite(tcom, toolkit,
- "Search Class", dialog, SWT.NONE);
+
+ final SearchComposite searchComposite = new SearchComposite(tcom, toolkit,
"Search Class", dialog,
+ SWT.NONE);
gd = new GridData(GridData.FILL_HORIZONTAL);
searchComposite.setLayoutData(gd);
Object editValue = getEditValue(propertyDescriptor, model);
@@ -886,7 +892,7 @@
if (readOnly) {
style = style | SWT.READ_ONLY;
}
-
+
Composite tcom = formToolkit.createComposite(parent);
GridLayout layout = new GridLayout();
layout.numColumns = 2;
@@ -894,7 +900,7 @@
layout.marginRight = 0;
layout.horizontalSpacing = 0;
tcom.setLayout(layout);
-
+
FieldMarkerComposite notificationComposite = new FieldMarkerComposite(tcom, SWT.NONE);
GridData gd = new GridData();
gd.heightHint = 8;
@@ -903,13 +909,17 @@
gd.verticalAlignment = GridData.BEGINNING;
notificationComposite.setLayoutData(gd);
fieldEditPart.setFieldMarker(notificationComposite);
-
+
final Combo combo = new Combo(tcom, style);
+ boolean valueIsSet = false;
+ if (model instanceof EObject) {
+ valueIsSet = ((EObject) model).eIsSet((EAttribute)
itemPropertyDescriptor.getFeature(model));
+ }
combo.add("");
if (items != null) {
for (int i = 0; i < items.length; i++) {
combo.add(items[i]);
- if (items[i].equals(editValue)) {
+ if (valueIsSet && items[i].equals(editValue)) {
currentSelect = i + 1;
}
}
@@ -917,25 +927,27 @@
gd = new GridData(GridData.FILL_HORIZONTAL);
tcom.setLayoutData(gd);
combo.setLayoutData(gd);
-
+
if (currentSelect != -1) {
combo.select(currentSelect);
}
final Object fm = model;
- final IItemPropertyDescriptor fipd = itemPropertyDescriptor;
+ final ItemPropertyDescriptor fipd = (ItemPropertyDescriptor) itemPropertyDescriptor;
final IModelProcsser fp = processer;
combo.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent e) {
String text = combo.getText();
if (text == null || text.length() == 0) {
- fipd.setPropertyValue(fm, null);
+ UnSetFeatureCommand command = new UnSetFeatureCommand(fipd, fm);
+ EditingDomain domain = fipd.getEditingDomain(fm);
+ domain.getCommandStack().execute(command);
return;
}
Object setValue = text;
if (fp != null) {
setValue = fp.wrapValue(text);
}
- if (setValue.equals(getEditValue(fipd, fm))) {
+ if (((EObject) fm).eIsSet((EAttribute) fipd.getFeature(fm)) &&
setValue.equals(getEditValue(fipd, fm))) {
return;
}
fipd.setPropertyValue(fm, setValue);
@@ -994,7 +1006,7 @@
fillLayout.marginHeight = 0;
fillLayout.marginWidth = 0;
classTextComposite.setLayout(fillLayout);
-
+
Composite tcom = toolkit.createComposite(classTextComposite);
GridLayout layout = new GridLayout();
layout.numColumns = 2;
@@ -1002,7 +1014,7 @@
layout.marginRight = 0;
layout.horizontalSpacing = 0;
tcom.setLayout(layout);
-
+
FieldMarkerComposite notificationComposite = new FieldMarkerComposite(tcom, SWT.NONE);
gd = new GridData();
gd.heightHint = 8;
@@ -1011,12 +1023,11 @@
gd.verticalAlignment = GridData.BEGINNING;
notificationComposite.setLayoutData(gd);
editpart.setFieldMarker(notificationComposite);
-
- final SearchComposite searchComposite = new SearchComposite(tcom, toolkit, buttonName,
dialog,
- SWT.NONE);
+
+ final SearchComposite searchComposite = new SearchComposite(tcom, toolkit, buttonName,
dialog, SWT.NONE);
gd = new GridData(GridData.FILL_HORIZONTAL);
searchComposite.setLayoutData(gd);
-
+
Object editValue = getEditValue(propertyDescriptor, model);
if (editValue != null) {
searchComposite.getText().setText(editValue.toString());
@@ -1038,8 +1049,7 @@
}
}
});
-
-
+
toolkit.paintBordersFor(classTextComposite);
editpart.setContentControl(classTextComposite);
return editpart;
Added:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/ClassFieldEditorValidator.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/ClassFieldEditorValidator.java
(rev 0)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/ClassFieldEditorValidator.java 2009-05-13
08:45:40 UTC (rev 15237)
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.smooks.configuration.validate;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.core.resources.IResource;
+import org.eclipse.emf.common.util.BasicDiagnostic;
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
+import org.jboss.tools.smooks.configuration.editors.uitls.ProjectClassLoader;
+import org.jboss.tools.smooks.configuration.editors.uitls.SmooksUIUtils;
+import org.jboss.tools.smooks.model.javabean.BindingsType;
+import org.jboss.tools.smooks.model.javabean.JavabeanPackage;
+
+/**
+ * @author Dart (dpeng(a)redhat.com)
+ *
+ */
+public class ClassFieldEditorValidator implements ISmooksValidator {
+
+ private ProjectClassLoader classLoader;
+
+ /**
+ * @return the classLoader
+ */
+ public ProjectClassLoader getClassLoader(EObject obj) {
+ if (classLoader != null) {
+ return classLoader;
+ }
+ IResource resource = SmooksUIUtils.getResource(obj);
+ try {
+ classLoader = new ProjectClassLoader(JavaCore.create(resource.getProject()));
+ } catch (JavaModelException e) {
+ e.printStackTrace();
+ }
+ return classLoader;
+ }
+
+ public List<Diagnostic> validate(Collection<?> selectionObjects) {
+ List<Diagnostic> list = new ArrayList<Diagnostic>();
+ for (Iterator<?> iterator = selectionObjects.iterator(); iterator.hasNext();) {
+ Object object = (Object) iterator.next();
+ if (object instanceof BindingsType) {
+ BindingsType bindings = (BindingsType) object;
+ classLoader = getClassLoader(bindings);
+ String clazz = bindings.getClass_();
+ Class<?> clazz1 = null;
+ if (clazz != null && classLoader != null) {
+ try {
+ clazz1 = classLoader.loadClass(clazz);
+ } catch (ClassNotFoundException e) {
+ // ignore
+ }
+ }
+ String message = "Can't find class : \"" + clazz +
"\"";
+ if (clazz1 == null) {
+ list.add(new BasicDiagnostic(Diagnostic.WARNING, "org.jboss.tools", 0,
message, new Object[] {
+ bindings, JavabeanPackage.Literals.BINDINGS_TYPE__CLASS }));
+ }
+ }
+
+ if (object instanceof EObject) {
+ List<Diagnostic> dd = validate(((EObject) object).eContents());
+ if (dd != null) {
+ list.addAll(dd);
+ }
+ }
+ }
+ return list;
+ }
+
+ public List<Diagnostic> validate(Collection<?> selectedObjects,
EditingDomain editingDomain) {
+ return validate(selectedObjects);
+ }
+}
Property changes on:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/ClassFieldEditorValidator.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/ISmooksModelValidateListener.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/ISmooksModelValidateListener.java
(rev 0)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/ISmooksModelValidateListener.java 2009-05-13
08:45:40 UTC (rev 15237)
@@ -0,0 +1,10 @@
+package org.jboss.tools.smooks.configuration.validate;
+
+import java.util.List;
+
+import org.eclipse.emf.common.util.Diagnostic;
+
+public interface ISmooksModelValidateListener {
+ void validateStart();
+ void validateEnd(List<Diagnostic> diagnosticResult);
+}
Property changes on:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/ISmooksModelValidateListener.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/ISmooksValidator.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/ISmooksValidator.java
(rev 0)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/ISmooksValidator.java 2009-05-13
08:45:40 UTC (rev 15237)
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.smooks.configuration.validate;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.edit.domain.EditingDomain;
+
+/**
+ * @author Dart (dpeng(a)redhat.com)
+ *
+ */
+public interface ISmooksValidator {
+ public List<Diagnostic> validate(Collection<?> selectedObjects,
EditingDomain editingDomain);
+}
Property changes on:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/ISmooksValidator.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/SmooksMarkerHelper.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/SmooksMarkerHelper.java 2009-05-12
20:02:47 UTC (rev 15236)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/SmooksMarkerHelper.java 2009-05-13
08:45:40 UTC (rev 15237)
@@ -31,13 +31,15 @@
*/
public class SmooksMarkerHelper extends EditUIMarkerHelper {
+ public static final String MARKER_ID = "org.jboss.tools.smooks.ui.problem";
+
public IRunnableWithProgress getWorkspaceModifyOperation(IRunnableWithProgress
runnableWithProgress) {
return new WorkspaceModifyDelegatingOperation(runnableWithProgress);
}
@Override
protected String getMarkerID() {
- return EValidator.MARKER;
+ return MARKER_ID;
}
public void createMarkers(Resource resource, Diagnostic diagnostic) {
Added:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/SmooksModelValidator.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/SmooksModelValidator.java
(rev 0)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/SmooksModelValidator.java 2009-05-13
08:45:40 UTC (rev 15237)
@@ -0,0 +1,195 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at
http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.smooks.configuration.validate;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.util.BasicDiagnostic;
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.DiagnosticChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.Diagnostician;
+import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.swt.widgets.Display;
+
+/**
+ * @author Dart (dpeng(a)redhat.com)
+ * <p>
+ * Apr 14, 2009
+ */
+public class SmooksModelValidator implements ISmooksValidator{
+
+ Collection<?> selectedObjects;
+ EditingDomain domain;
+ private boolean starting = false;
+ private boolean waiting = false;
+ private Object lock = new Object();
+
+ private long watingTime = 300;
+
+ private List<ISmooksModelValidateListener> listeners = new
ArrayList<ISmooksModelValidateListener>();
+
+ private List<ISmooksValidator> validatorList = new
ArrayList<ISmooksValidator>();
+
+ public SmooksModelValidator(Collection<?> selectedObjects, EditingDomain domain)
{
+ this();
+ this.selectedObjects = selectedObjects;
+ this.domain = domain;
+ }
+
+ public SmooksModelValidator() {
+ validatorList.add(new ClassFieldEditorValidator());
+ }
+
+ public void addValidateListener(ISmooksModelValidateListener l) {
+ if (!listeners.contains(l))
+ listeners.add(l);
+ }
+
+ public void removeValidateListener(ISmooksModelValidateListener l) {
+ listeners.remove(l);
+ }
+
+ public List<Diagnostic> validate(Collection<?> selectedObjects,
EditingDomain editingDomain) {
+ this.selectedObjects = selectedObjects;
+ domain = editingDomain;
+ return validate(new NullProgressMonitor());
+ }
+
+ public List<Diagnostic> validate(final IProgressMonitor progressMonitor) {
+ EObject eObject = (EObject) selectedObjects.iterator().next();
+ int count = 0;
+ for (Iterator<?> i = eObject.eAllContents(); i.hasNext(); i.next()) {
+ ++count;
+ }
+
+ progressMonitor.beginTask("", count);
+
+ final AdapterFactory adapterFactory = domain instanceof AdapterFactoryEditingDomain ?
((AdapterFactoryEditingDomain) domain)
+ .getAdapterFactory()
+ : null;
+
+ Diagnostician diagnostician = new Diagnostician() {
+ @Override
+ public String getObjectLabel(EObject eObject) {
+ if (adapterFactory != null && !eObject.eIsProxy()) {
+ IItemLabelProvider itemLabelProvider = (IItemLabelProvider)
adapterFactory.adapt(eObject,
+ IItemLabelProvider.class);
+ if (itemLabelProvider != null) {
+ return itemLabelProvider.getText(eObject);
+ }
+ }
+
+ return super.getObjectLabel(eObject);
+ }
+
+ @Override
+ public boolean validate(EClass eClass, EObject eObject, DiagnosticChain diagnostics,
+ Map<Object, Object> context) {
+ progressMonitor.worked(1);
+ return super.validate(eClass, eObject, diagnostics, context);
+ }
+ };
+
+ progressMonitor.setTaskName("Validating...");
+
+ Diagnostic diagnostic = diagnostician.validate(eObject);
+
+ List<Diagnostic> list = new ArrayList<Diagnostic>();
+ list.add(diagnostic);
+ for (Iterator<?> iterator = this.validatorList.iterator(); iterator.hasNext();)
{
+ ISmooksValidator validator = (ISmooksValidator) iterator.next();
+ List<Diagnostic> d = validator.validate(selectedObjects, domain);
+ for (Iterator<?> iterator2 = d.iterator(); iterator2.hasNext();) {
+ Diagnostic diagnostic2 = (Diagnostic) iterator2.next();
+ ((BasicDiagnostic)diagnostic).add(diagnostic2);
+ }
+ }
+ return list;
+ }
+
+ public void startValidate(final Collection<?> selectedObjects, final EditingDomain
editingDomain) {
+ if (starting) {
+ synchronized (lock) {
+ waiting = true;
+ }
+ return;
+ }
+ Thread thread = new Thread() {
+ public void run() {
+ synchronized (lock) {
+ starting = true;
+ waiting = true;
+ }
+ while (waiting) {
+ try {
+ waiting = false;
+ Thread.sleep(watingTime);
+ Thread.yield();
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ try {
+ for (Iterator<?> iterator = listeners.iterator(); iterator.hasNext();) {
+ final ISmooksModelValidateListener l = (ISmooksModelValidateListener)
iterator.next();
+ Display.getDefault().syncExec(new Runnable() {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.lang.Runnable#run()
+ */
+ public void run() {
+ l.validateStart();
+ }
+
+ });
+
+ }
+
+ final List<Diagnostic> d = validate(selectedObjects, editingDomain);
+
+ for (Iterator<?> iterator = listeners.iterator(); iterator.hasNext();) {
+ final ISmooksModelValidateListener l = (ISmooksModelValidateListener)
iterator.next();
+ Display.getDefault().syncExec(new Runnable() {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.lang.Runnable#run()
+ */
+ public void run() {
+ l.validateEnd(d);
+ }
+
+ });
+ }
+ } finally {
+ waiting = false;
+ starting = false;
+ }
+ }
+ };
+ thread.setName("Validate Smooks model");
+ thread.start();
+ }
+}
Property changes on:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/SmooksModelValidator.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified:
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/ValidateResultLabelDecorator.java
===================================================================
---
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/ValidateResultLabelDecorator.java 2009-05-12
20:02:47 UTC (rev 15236)
+++
trunk/smooks/plugins/org.jboss.tools.smooks.ui/src/org/jboss/tools/smooks/configuration/validate/ValidateResultLabelDecorator.java 2009-05-13
08:45:40 UTC (rev 15237)
@@ -144,7 +144,8 @@
}
SmooksMultiFormEditor editor = (SmooksMultiFormEditor)
window.getActivePage().findEditor(
new FileEditorInput((IFile) resource));
- int type = markErrorWarningPropertyUI(editor.getDiagnostic(), element);
+ int type = -1;
+// int type = markErrorWarningPropertyUI(editor.getDiagnosticList(), element);
decoration.addOverlay(null, IDecoration.BOTTOM_RIGHT);
if (type == Diagnostic.ERROR) {
decoration.addOverlay(SmooksConfigurationActivator.getDefault().getImageRegistry().getDescriptor(