</goals>
<configuration>
<excludes>
+ <plugin id="org.apache.xerces"/>
+ <plugin id="org.apache.xml.resolver"/>
+ <plugin id="org.apache.xml.serializer"/>
<plugin id="org.eclipse.cdt.core"/>
<plugin id="org.eclipse.cdt.core.native"/>
<plugin id="org.eclipse.core.runtime.compatibility.auth"/>
<plugin id="org.eclipse.remote.jsch.ui"/>
<plugin id="org.eclipse.remote.ui"/>
<plugin id="org.eclipse.remote.console"/>
+ <plugin id="org.eclipse.wst.common.core"/>
+ <plugin id="org.eclipse.wst.common.environment"/>
+ <plugin id="org.eclipse.wst.common.frameworks"/>
+ <plugin id="org.eclipse.wst.common.frameworks.ui"/>
+ <plugin id="org.eclipse.wst.common.project.facet.core"/>
+ <plugin id="org.eclipse.wst.common.ui"/>
+ <plugin id="org.eclipse.wst.common.uriresolver"/>
+ <plugin id="org.eclipse.wst.sse.core"/>
+ <plugin id="org.eclipse.wst.sse.ui"/>
+ <plugin id="org.eclipse.wst.validation"/>
+ <plugin id="org.eclipse.wst.validation.ui"/>
+ <plugin id="org.eclipse.wst.xml.core"/>
+ <plugin id="org.eclipse.wst.xml.ui"/>
</excludes>
</configuration>
</execution>
import java.util.ArrayList;
import java.util.Map;
+import org.eclipse.core.filesystem.EFS;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Path;
+import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.tracecompass.tmf.ui.project.model.TmfProjectModelElement;
import org.eclipse.tracecompass.tmf.ui.project.model.TmfProjectRegistry;
import org.eclipse.tracecompass.tmf.ui.project.model.TraceUtils;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IPropertyListener;
+import org.eclipse.ui.ISaveablePart;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.ide.IDE;
/**
* Dialog for XML analysis files
private Button fDeleteButton;
private Button fImportButton;
private Button fExportButton;
+ private Button fEditButton;
private Label fInvalidFileLabel;
/**
if (fAnalysesList.getSelectionCount() == 0) {
fDeleteButton.setEnabled(false);
fExportButton.setEnabled(false);
+ fEditButton.setEnabled(false);
} else {
fDeleteButton.setEnabled(true);
fExportButton.setEnabled(true);
+ fEditButton.setEnabled(true);
handleSelection(fAnalysesList.getSelection());
}
}
}
});
+ fEditButton = new Button(buttonContainer, SWT.PUSH);
+ fEditButton.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false));
+ fEditButton.setText(Messages.ManageXMLAnalysisDialog_Edit);
+ fEditButton.setEnabled(false);
+ fEditButton.addSelectionListener(new SelectionListener() {
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ editAnalysis();
+ }
+
+ });
+
fDeleteButton = new Button(buttonContainer, SWT.PUSH);
fDeleteButton.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false));
fDeleteButton.setText(Messages.ManageXMLAnalysisDialog_Delete);
String path = dialog.open();
if (path != null) {
File file = new File(path);
- IStatus status = XmlUtils.xmlValidate(file);
- if (status.isOK()) {
- deleteSupplementaryFile(file.getName());
+ if (loadXmlFile(file, true)) {
+ fillAnalysesList();
+ }
+ }
+ }
+
+ private static boolean loadXmlFile(File file, boolean addFile) {
+ IStatus status = XmlUtils.xmlValidate(file);
+ if (status.isOK()) {
+ deleteSupplementaryFile(file.getName());
+ if (addFile) {
status = XmlUtils.addXmlFile(file);
- if (status.isOK()) {
- fillAnalysesList();
- XmlAnalysisModuleSource.notifyModuleChange();
- /*
- * FIXME: It refreshes the list of analysis under a trace,
- * but since modules are instantiated when the trace opens,
- * the changes won't apply to an opened trace, it needs to
- * be closed then reopened
- */
- refreshProject();
- } else {
- Activator.logError(Messages.ManageXMLAnalysisDialog_ImportFileFailed);
- TraceUtils.displayErrorMsg(Messages.ManageXMLAnalysisDialog_ImportFileFailed, status.getMessage());
- }
- } else {
- Activator.logError(Messages.ManageXMLAnalysisDialog_ImportFileFailed);
- TraceUtils.displayErrorMsg(Messages.ManageXMLAnalysisDialog_ImportFileFailed, status.getMessage());
}
+ if (status.isOK()) {
+ XmlAnalysisModuleSource.notifyModuleChange();
+ /*
+ * FIXME: It refreshes the list of analysis under a trace,
+ * but since modules are instantiated when the trace opens,
+ * the changes won't apply to an opened trace, it needs to
+ * be closed then reopened
+ */
+ refreshProject();
+ return true;
+ }
+
+ Activator.logError(Messages.ManageXMLAnalysisDialog_ImportFileFailed);
+ TraceUtils.displayErrorMsg(Messages.ManageXMLAnalysisDialog_ImportFileFailed, status.getMessage());
+ } else {
+ Activator.logError(Messages.ManageXMLAnalysisDialog_ImportFileFailed);
+ TraceUtils.displayErrorMsg(Messages.ManageXMLAnalysisDialog_ImportFileFailed, status.getMessage());
}
+ return false;
}
private void exportAnalysis() {
}
}
+ private void editAnalysis() {
+ String selection = createXmlFileString(fAnalysesList.getSelection()[0]);
+ @Nullable
+ File file = XmlUtils.listFiles().get(selection);
+ if (file == null) {
+ Activator.logError(NLS.bind(Messages.ManageXMLAnalysisDialog_FailedToEdit, selection));
+ TraceUtils.displayErrorMsg(NLS.bind(Messages.ManageXMLAnalysisDialog_FailedToEdit, selection), NLS.bind(Messages.ManageXMLAnalysisDialog_FailedToEdit, selection));
+ return;
+ }
+ try {
+ IEditorPart editorPart = IDE.openEditorOnFileStore(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(), EFS.getStore(file.toURI()));
+ editorPart.addPropertyListener(new IPropertyListener() {
+ @Override
+ public void propertyChanged(Object source, int propId) {
+ if (ISaveablePart.PROP_DIRTY == propId) {
+ if (!editorPart.isDirty()) {
+ // Editor is not dirty anymore, i.e. it was saved
+ loadXmlFile(file, false);
+ }
+ }
+ }
+ });
+ close();
+ } catch (CoreException e) {
+ Activator.logError(NLS.bind(Messages.ManageXMLAnalysisDialog_FailedToEdit, selection));
+ TraceUtils.displayErrorMsg(NLS.bind(Messages.ManageXMLAnalysisDialog_FailedToEdit, selection), e.getMessage());
+ }
+ }
+
private void deleteAnalysis() {
boolean confirm = MessageDialog.openQuestion(
getShell(),