Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBogdan Gheorghe2006-07-12 19:46:52 +0000
committerBogdan Gheorghe2006-07-12 19:46:52 +0000
commitbd54a38b309c5c1b766c507119a261610693bf04 (patch)
treed1f695bdf02094786213aa1c8388795fbb38ca12
parent8db4536566f3a0f7fcc0b5efcff89c1d432ba414 (diff)
downloadeclipse.platform.team-bd54a38b309c5c1b766c507119a261610693bf04.tar.gz
eclipse.platform.team-bd54a38b309c5c1b766c507119a261610693bf04.tar.xz
eclipse.platform.team-bd54a38b309c5c1b766c507119a261610693bf04.zip
Support for exporting working sets as part of a Team Project Set
-rw-r--r--bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ProjectSetImporter.java75
-rw-r--r--bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TeamUIMessages.java6
-rw-r--r--bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/messages.properties3
-rw-r--r--bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/wizards/ExportProjectSetLocationPage.java409
-rw-r--r--bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/wizards/ExportProjectSetMainPage.java972
-rw-r--r--bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/wizards/ProjectSetExportWizard.java79
6 files changed, 1038 insertions, 506 deletions
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ProjectSetImporter.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ProjectSetImporter.java
index ef8d0fc90..7172223cf 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ProjectSetImporter.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ProjectSetImporter.java
@@ -10,36 +10,17 @@
*******************************************************************************/
package org.eclipse.team.internal.ui;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
+import java.io.*;
import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
+import java.util.*;
import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.*;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.widgets.Shell;
-import org.eclipse.team.core.IProjectSetSerializer;
-import org.eclipse.team.core.ProjectSetCapability;
-import org.eclipse.team.core.RepositoryProviderType;
-import org.eclipse.team.core.Team;
-import org.eclipse.team.core.TeamException;
+import org.eclipse.team.core.*;
import org.eclipse.team.internal.core.TeamPlugin;
-import org.eclipse.ui.PlatformUI;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
+import org.eclipse.ui.*;
public class ProjectSetImporter {
@@ -48,15 +29,11 @@ public class ProjectSetImporter {
try {
reader = new InputStreamReader(new FileInputStream(filename), "UTF-8"); //$NON-NLS-1$
- SAXParserFactory factory = SAXParserFactory.newInstance();
- SAXParser parser = factory.newSAXParser();
- ProjectSetContentHandler handler = new ProjectSetContentHandler();
- InputSource source = new InputSource(reader);
- parser.parse(source, handler);
+ XMLMemento xmlMemento = XMLMemento.createReadRoot(reader);
+ String version = xmlMemento.getString("version"); //$NON-NLS-1$
- Map map = handler.getReferences();
List newProjects = new ArrayList();
- if ((map == null || map.size() == 0) && handler.isVersionOne()) {
+ if (version.equals("1.0")){ //$NON-NLS-1$
IProjectSetSerializer serializer = Team.getProjectSetSerializer("versionOneSerializer"); //$NON-NLS-1$
if (serializer != null) {
IProject[] projects = serializer.addToWorkspace(new String[0], filename, shell, monitor);
@@ -65,12 +42,16 @@ public class ProjectSetImporter {
}
} else {
UIProjectSetSerializationContext context = new UIProjectSetSerializationContext(shell, filename);
- Iterator it = map.keySet().iterator();
List errors = new ArrayList();
- while (it.hasNext()) {
+ ArrayList referenceStrings = new ArrayList();
+ IMemento[] providers = xmlMemento.getChildren("provider"); //$NON-NLS-1$
+ for (int i = 0; i < providers.length; i++) {
+ IMemento[] projects = providers[i].getChildren("project"); //$NON-NLS-1$
+ for (int j = 0; j < projects.length; j++) {
+ referenceStrings.add(projects[j].getString("reference")); //$NON-NLS-1$
+ }
try {
- String id = (String)it.next();
- List references = (List)map.get(id);
+ String id = providers[i].getString("id"); //$NON-NLS-1$
TeamCapabilityHelper.getInstance().processRepositoryId(id,
PlatformUI.getWorkbench().getActivitySupport());
RepositoryProviderType providerType = RepositoryProviderType.getProviderType(id);
@@ -84,15 +65,15 @@ public class ProjectSetImporter {
ProjectSetCapability serializer = providerType.getProjectSetCapability();
ProjectSetCapability.ensureBackwardsCompatible(providerType, serializer);
if (serializer != null) {
- IProject[] projects = serializer.addToWorkspace((String[])references.toArray(new String[references.size()]), context, monitor);
- if (projects != null)
- newProjects.addAll(Arrays.asList(projects));
+ IProject[] allProjects = serializer.addToWorkspace((String[])referenceStrings.toArray(new String[referenceStrings.size()]), context, monitor);
+ if (allProjects != null)
+ newProjects.addAll(Arrays.asList(allProjects));
}
} catch (TeamException e) {
errors.add(e);
}
}
- if (!errors.isEmpty()) {
+ if (!errors.isEmpty()) {
if (errors.size() == 1) {
throw (TeamException)errors.get(0);
} else {
@@ -104,15 +85,25 @@ public class ProjectSetImporter {
throw new TeamException(new MultiStatus(TeamUIPlugin.ID, 0, status, TeamUIMessages.ProjectSetImportWizard_1, null));
}
}
+
+ //try working sets
+ IMemento[] sets = xmlMemento.getChildren("workingSets"); //$NON-NLS-1$
+ IWorkingSetManager wsManager = TeamUIPlugin.getPlugin().getWorkbench().getWorkingSetManager();
+
+ for (int i = 0; i < sets.length; i++) {
+ IWorkingSet ws = wsManager.createWorkingSet(sets[i]);
+ if (ws != null)
+ wsManager.addWorkingSet(ws);
+ }
+
}
+
return (IProject[]) newProjects.toArray(new IProject[newProjects.size()]);
} catch (IOException e) {
throw new InvocationTargetException(e);
- } catch (SAXException e) {
- throw new InvocationTargetException(e);
} catch (TeamException e) {
throw new InvocationTargetException(e);
- } catch (ParserConfigurationException e) {
+ } catch (WorkbenchException e) {
throw new InvocationTargetException(e);
} finally {
if (reader != null) {
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TeamUIMessages.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TeamUIMessages.java
index 43610425d..bace1203f 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TeamUIMessages.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TeamUIMessages.java
@@ -49,10 +49,16 @@ public class TeamUIMessages extends NLS {
public static String ExportProjectSetMainPage_DeselectAll;
+ public static String ExportProjectSetMainPage_EditButton;
+
+ public static String ExportProjectSetMainPage_ExportWorkingSets;
+
public static String ExportProjectSetMainPage_FileButton;
public static String ExportProjectSetMainPage_SelectAll;
+ public static String ExportProjectSetMainPage_SelectButton;
+
public static String ExportProjectSetMainPage_WorkspaceButton;
public static String ExportProjectSetMainPage_WorkspaceDialogErrorFilenameSegments;
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/messages.properties b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/messages.properties
index 6c5b91d23..e4d91b75c 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/messages.properties
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/messages.properties
@@ -81,6 +81,7 @@ ExportProjectSetMainPage_WorkspaceDialogMessage=Export Team Project Set to Works
ExportProjectSetMainPage_WorkspaceDialogFilename=Filename
ExportProjectSetMainPage_Browse_4=B&rowse...
ExportProjectSetMainPage_SelectAll=S&elect All
+ExportProjectSetMainPage_SelectButton=Select which working sets to export
ExportProjectSetMainPage_Browse=Bro&wse ...
ExportProjectSetMainPage_You_have_specified_a_folder_5=You have specified a folder
ExportProjectSetMainPage_WorkspaceDialogTitleMessage=Select a Folder in the Workspace and Type in a Filename
@@ -126,6 +127,7 @@ ImportProjectSetAction_0=An error occurred importing this project set.
ImportProjectSetMainPage_Project_Set_Files_2=Team Project Set Files (*.psf)
ExportProjectSetMainPage__File_name__1=&File name:
ExportProjectSetMainPage_WorkspaceButton=W&orkspace
+ExportProjectSetMainPage_ExportWorkingSets=Export working sets
SyncViewPreferencePage_lastRefreshRunNever=Never
@@ -326,6 +328,7 @@ ImportProjectSetMainPage_description=Creates projects from a previously exported
ExportProjectSetMainPage_description=Save a file containing the names and locations of the shared projects in the workspace.
ExportProjectSetMainPage_DeselectAll=&Deselect All
ExportProjectSetMainPage_FileButton=F&ile
+ExportProjectSetMainPage_EditButton=Edit...
DefaultUIFileModificationValidator_0=Read-only Files Encountered
DefaultUIFileModificationValidator_1=Some of the files being modified by the current operation are read-only. Do you wish to make them writable?
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/wizards/ExportProjectSetLocationPage.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/wizards/ExportProjectSetLocationPage.java
new file mode 100644
index 000000000..aa55d1ceb
--- /dev/null
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/wizards/ExportProjectSetLocationPage.java
@@ -0,0 +1,409 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.team.internal.ui.wizards;
+
+import java.io.File;
+import java.util.ArrayList;
+
+import org.eclipse.core.resources.*;
+import org.eclipse.core.runtime.*;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.TitleAreaDialog;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.viewers.*;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.*;
+import org.eclipse.team.internal.ui.TeamUIMessages;
+import org.eclipse.ui.model.BaseWorkbenchContentProvider;
+import org.eclipse.ui.model.WorkbenchLabelProvider;
+
+public class ExportProjectSetLocationPage extends TeamWizardPage {
+
+ Combo fileCombo;
+ protected IFile workspaceFile;
+ protected String file = ""; //$NON-NLS-1$
+ Button browseButton;
+
+ private boolean saveToFileSystem;
+ private Button fileRadio;
+ private Button workspaceRadio;
+
+ protected Text workspaceText;
+
+ public ExportProjectSetLocationPage(String pageName, String title, ImageDescriptor titleImage) {
+ super(pageName, title, titleImage);
+ setDescription(TeamUIMessages.ExportProjectSetMainPage_description);
+ }
+
+ public void createControl(Composite parent) {
+ Composite composite = createComposite(parent, 1);
+ initializeDialogUnits(composite);
+
+ Group locationGroup = new Group(composite, SWT.None);
+ GridLayout layout = new GridLayout();
+ locationGroup.setLayout(layout);
+ GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL);
+ locationGroup.setLayoutData(data);
+ locationGroup.setText(TeamUIMessages.ExportProjectSetMainPage_Project_Set_File_Name__3);
+
+ createExportToFile(locationGroup);
+
+ createExportToWorkspace(locationGroup);
+
+ saveToFileSystem = true;
+
+ setControl(composite);
+ updateEnablement();
+ Dialog.applyDialogFont(parent);
+ }
+
+ private void createExportToFile(Composite composite) {
+ fileRadio = new Button(composite, SWT.RADIO);
+ fileRadio.setText(TeamUIMessages.ExportProjectSetMainPage_FileButton);
+ fileRadio.addListener(SWT.Selection, new Listener() {
+ public void handleEvent(Event event) {
+ saveToFileSystem = true;
+ updateEnablement();
+ }
+ });
+
+ Composite inner = new Composite(composite, SWT.NONE);
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 2;
+ layout.marginWidth = 0;
+ inner.setLayout(layout);
+ GridData data = new GridData(SWT.FILL, SWT.FILL, true, false);
+ inner.setLayoutData(data);
+
+ fileCombo = createDropDownCombo(inner);
+ file = PsfFilenameStore.getSuggestedDefault();
+ fileCombo.setItems(PsfFilenameStore.getHistory());
+ fileCombo.setText(file);
+ fileCombo.addListener(SWT.Modify, new Listener() {
+ public void handleEvent(Event event) {
+ file = fileCombo.getText();
+ updateEnablement();
+ }
+ });
+
+ browseButton = new Button(inner, SWT.PUSH);
+ browseButton.setText(TeamUIMessages.ExportProjectSetMainPage_Browse_4);
+ data = new GridData();
+ data.horizontalAlignment = GridData.FILL;
+ int widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
+ data.widthHint = Math.max(widthHint, browseButton.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x);
+ browseButton.setLayoutData(data);
+ browseButton.addListener(SWT.Selection, new Listener() {
+ public void handleEvent(Event event) {
+ if (!isSaveToFileSystem())
+ saveToFileSystem = true;
+
+ FileDialog d = new FileDialog(getShell(), SWT.SAVE);
+ d.setFilterExtensions(new String[] {"*.psf"}); //$NON-NLS-1$
+ d.setFilterNames(new String[] {TeamUIMessages.ExportProjectSetMainPage_Project_Set_Files_3});
+ d.setFileName(TeamUIMessages.ExportProjectSetMainPage_default);
+ String fileName = getFileName();
+ if (fileName != null) {
+ int separator = fileName.lastIndexOf(System.getProperty("file.separator").charAt(0)); //$NON-NLS-1$
+ if (separator != -1) {
+ fileName = fileName.substring(0, separator);
+ }
+ }
+ d.setFilterPath(fileName);
+ String f = d.open();
+ if (f != null) {
+ fileCombo.setText(f);
+ file = f;
+ }
+ }
+ });
+ }
+
+ private void createExportToWorkspace(Composite composite) {
+ workspaceRadio = new Button(composite, SWT.RADIO);
+ workspaceRadio.setText(TeamUIMessages.ExportProjectSetMainPage_WorkspaceButton);
+ workspaceRadio.addListener(SWT.Selection, new Listener() {
+ public void handleEvent(Event event) {
+ saveToFileSystem = false;
+ updateEnablement();
+ }
+ });
+
+ final Composite nameGroup = new Composite(composite, SWT.NONE);
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 2;
+ layout.marginWidth = 0;
+ nameGroup.setLayout(layout);
+ final GridData data = new GridData(SWT.FILL, SWT.FILL, true, false);
+ nameGroup.setLayoutData(data);
+
+ workspaceText = createTextField(nameGroup);
+ workspaceText.setEditable(false);
+ workspaceText.addListener(SWT.Modify, new Listener() {
+ public void handleEvent(Event event) {
+ file = workspaceFile.getLocation().toString();
+ updateEnablement();
+ }
+ });
+ Button wsBrowseButton = new Button(nameGroup, SWT.PUSH);
+ GridData gd = new GridData();
+ gd.horizontalAlignment = GridData.FILL;
+ int widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
+ gd.widthHint = Math.max(widthHint, wsBrowseButton.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x);
+ wsBrowseButton.setLayoutData(gd);
+ wsBrowseButton.setText(TeamUIMessages.ExportProjectSetMainPage_Browse);
+ wsBrowseButton.addListener(SWT.Selection, new Listener() {
+ public void handleEvent(Event event) {
+ if (isSaveToFileSystem())
+ saveToFileSystem = false;
+
+ WorkspaceDialog d = new WorkspaceDialog(getShell());
+ d.open();
+ }
+ });
+ }
+
+ private void updateEnablement() {
+ boolean complete;
+ //update radio buttons
+ fileRadio.setSelection(saveToFileSystem);
+ workspaceRadio.setSelection(!saveToFileSystem);
+
+ if (file.length() == 0) {
+ setMessage(null);
+ complete = false;
+ } else {
+ File f = new File(file);
+ if (f.isDirectory()) {
+ setMessage(TeamUIMessages.ExportProjectSetMainPage_You_have_specified_a_folder_5, ERROR);
+ complete = false;
+ } else {
+ if (!isSaveToFileSystem() && workspaceFile == null)
+ complete = false;
+ else
+ complete = true;
+ }
+ }
+ if (complete) {
+ setMessage(null);
+ }
+ setPageComplete(complete);
+ }
+
+ public void setVisible(boolean visible) {
+ super.setVisible(visible);
+ if (visible) {
+ fileCombo.setFocus();
+ }
+ }
+
+ public boolean isSaveToFileSystem() {
+ return saveToFileSystem;
+ }
+
+ public void refreshWorkspaceFile(IProgressMonitor monitor) throws CoreException {
+ if (workspaceFile != null)
+ workspaceFile.refreshLocal(IResource.DEPTH_ONE, monitor);
+ }
+
+ public String getFileName() {
+ return file;
+ }
+
+ public void setFileName(String file) {
+ if (file != null) {
+ this.file = file;
+ }
+ }
+
+ class WorkspaceDialog extends TitleAreaDialog {
+
+ protected TreeViewer wsTreeViewer;
+ protected Text wsFilenameText;
+ protected IContainer wsContainer;
+ protected Image dlgTitleImage;
+
+ public WorkspaceDialog(Shell shell) {
+ super(shell);
+ }
+
+ protected Control createContents(Composite parent) {
+ Control control = super.createContents(parent);
+ setTitle(TeamUIMessages.ExportProjectSetMainPage_WorkspaceDialogTitle);
+ setMessage(TeamUIMessages.ExportProjectSetMainPage_WorkspaceDialogTitleMessage);
+
+ return control;
+ }
+
+ protected Control createDialogArea(Composite parent) {
+ Composite composite = (Composite) super.createDialogArea(parent);
+
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 1;
+ composite.setLayout(layout);
+ final GridData data = new GridData(SWT.FILL, SWT.FILL, true, false);
+ composite.setLayoutData(data);
+
+ getShell().setText(TeamUIMessages.ExportProjectSetMainPage_WorkspaceDialogMessage);
+
+ wsTreeViewer = new TreeViewer(composite, SWT.BORDER);
+ final GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
+ gd.widthHint = 550;
+ gd.heightHint = 250;
+ wsTreeViewer.getTree().setLayoutData(gd);
+
+ wsTreeViewer.setContentProvider(new LocationPageContentProvider());
+ wsTreeViewer.setLabelProvider(new WorkbenchLabelProvider());
+ wsTreeViewer.setInput(ResourcesPlugin.getWorkspace());
+
+ final Composite group = new Composite(composite, SWT.NONE);
+ layout = new GridLayout(2, false);
+ layout.marginWidth = 0;
+ group.setLayout(layout);
+ group.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+
+ final Label label = new Label(group, SWT.NONE);
+ label.setLayoutData(new GridData());
+ label.setText(TeamUIMessages.ExportProjectSetMainPage_WorkspaceDialogFilename);
+
+ wsFilenameText = new Text(group, SWT.BORDER);
+ wsFilenameText.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
+ wsFilenameText.setText("projectSet.psf"); //$NON-NLS-1$
+
+ setupListeners();
+
+ return parent;
+ }
+
+ protected void okPressed() {
+ //make sure that a filename has been typed in
+
+ String patchName = wsFilenameText.getText();
+
+ if (patchName.equals("")) { //$NON-NLS-1$
+ setErrorMessage(TeamUIMessages.ExportProjectSetMainPage_WorkspaceDialogErrorNoFilename);
+ return;
+ }
+
+ //make sure that the filename does not contain more than one segment
+ if (!(ResourcesPlugin.getWorkspace().validateName(patchName, IResource.FILE)).isOK()) {
+ wsFilenameText.setText(""); //$NON-NLS-1$
+ setErrorMessage(TeamUIMessages.ExportProjectSetMainPage_WorkspaceDialogErrorFilenameSegments);
+ return;
+ }
+
+ //Make sure that a container has been selected
+ if (wsContainer == null) {
+ getSelectedContainer();
+ }
+ //Assert.isNotNull(wsContainer);
+
+ workspaceFile = wsContainer.getFile(new Path(wsFilenameText.getText()));
+ if (workspaceFile != null) {
+ workspaceText.setText(workspaceFile.getFullPath().toString());
+ }
+ //this.page.validatePage();
+ //workspaceText.setText(wsFilenameText.getText());
+ super.okPressed();
+ }
+
+ private void getSelectedContainer() {
+ Object obj = ((IStructuredSelection) wsTreeViewer.getSelection()).getFirstElement();
+
+ if (obj instanceof IContainer)
+ wsContainer = (IContainer) obj;
+ else if (obj instanceof IFile) {
+ wsContainer = ((IFile) obj).getParent();
+ }
+ }
+
+ protected void cancelPressed() {
+ //this.page.validatePage();
+ getSelectedContainer();
+ super.cancelPressed();
+ }
+
+ public boolean close() {
+ /* if (dlgTitleImage != null)
+ dlgTitleImage.dispose();*/
+ return super.close();
+ }
+
+ void setupListeners() {
+ wsTreeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
+ public void selectionChanged(SelectionChangedEvent event) {
+ IStructuredSelection s = (IStructuredSelection) event.getSelection();
+ Object obj = s.getFirstElement();
+ if (obj != null) {
+
+ }
+ if (obj instanceof IContainer)
+ wsContainer = (IContainer) obj;
+ else if (obj instanceof IFile) {
+ IFile tempFile = (IFile) obj;
+ wsContainer = tempFile.getParent();
+ wsFilenameText.setText(tempFile.getName());
+ }
+ }
+ });
+
+ wsTreeViewer.addDoubleClickListener(new IDoubleClickListener() {
+ public void doubleClick(DoubleClickEvent event) {
+ ISelection s = event.getSelection();
+ if (s instanceof IStructuredSelection) {
+ Object item = ((IStructuredSelection) s).getFirstElement();
+ if (wsTreeViewer.getExpandedState(item))
+ wsTreeViewer.collapseToLevel(item, 1);
+ else
+ wsTreeViewer.expandToLevel(item, 1);
+ }
+ }
+ });
+
+ wsFilenameText.addModifyListener(new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ setErrorMessage(null);
+ }
+ });
+ }
+ }
+
+
+ class LocationPageContentProvider extends BaseWorkbenchContentProvider {
+ //Never show closed projects
+ boolean showClosedProjects = false;
+
+ public Object[] getChildren(Object element) {
+ if (element instanceof IWorkspace) {
+ // check if closed projects should be shown
+ IProject[] allProjects = ((IWorkspace) element).getRoot().getProjects();
+ if (showClosedProjects)
+ return allProjects;
+
+ ArrayList accessibleProjects = new ArrayList();
+ for (int i = 0; i < allProjects.length; i++) {
+ if (allProjects[i].isOpen()) {
+ accessibleProjects.add(allProjects[i]);
+ }
+ }
+ return accessibleProjects.toArray();
+ }
+
+ return super.getChildren(element);
+ }
+ }
+}
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/wizards/ExportProjectSetMainPage.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/wizards/ExportProjectSetMainPage.java
index 178a17723..09aa5f656 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/wizards/ExportProjectSetMainPage.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/wizards/ExportProjectSetMainPage.java
@@ -10,229 +10,136 @@
*******************************************************************************/
package org.eclipse.team.internal.ui.wizards;
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Arrays;
+import java.util.*;
import java.util.List;
import org.eclipse.core.resources.*;
-import org.eclipse.core.runtime.*;
-import org.eclipse.jface.dialogs.*;
+import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.jface.viewers.*;
import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.*;
import org.eclipse.team.core.RepositoryProvider;
-import org.eclipse.team.internal.ui.IHelpContextIds;
-import org.eclipse.team.internal.ui.TeamUIMessages;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.model.*;
+import org.eclipse.team.internal.ui.*;
+import org.eclipse.ui.*;
+import org.eclipse.ui.dialogs.IWorkingSetSelectionDialog;
+import org.eclipse.ui.model.WorkbenchLabelProvider;
+import org.eclipse.ui.part.Page;
+import org.eclipse.ui.part.PageBook;
public class ExportProjectSetMainPage extends TeamWizardPage {
- Combo fileCombo;
- protected Text workspaceText;
- protected String file = ""; //$NON-NLS-1$
- protected IFile workspaceFile;
- Button browseButton;
- List selectedProjects = new ArrayList();
-
- CheckboxTableViewer tableViewer;
- Table table;
-
- private boolean saveToFileSystem;
- private Button fileRadio;
- private Button workspaceRadio;
-
- class ProjectContentProvider extends WorkbenchContentProvider {
- public Object[] getElements(Object element) {
- if (element instanceof IProject[])
- return (IProject[]) element;
+
+
+ PageBook book;
+ ProjectPage projectPage;
+ WorkingSetPage workingSetPage;
+
+ IExportProjectSetPage selectedPage;
+
+ Button exportWorkingSets;
+
+ ArrayList passedInSelectedProjects = new ArrayList();
+
+ class ProjectContentProvider implements ITreePathContentProvider{
+
+ public Object[] getChildren(TreePath parentPath) {
+ Object obj = parentPath.getLastSegment();
+ if (obj instanceof IWorkingSet){
+ return ((IWorkingSet)obj).getElements();
+ }
return null;
}
- };
- class LocationPageContentProvider extends BaseWorkbenchContentProvider {
- //Never show closed projects
- boolean showClosedProjects = false;
-
- public Object[] getChildren(Object element) {
- if (element instanceof IWorkspace) {
- // check if closed projects should be shown
- IProject[] allProjects = ((IWorkspace) element).getRoot().getProjects();
- if (showClosedProjects)
- return allProjects;
-
- ArrayList accessibleProjects = new ArrayList();
- for (int i = 0; i < allProjects.length; i++) {
- if (allProjects[i].isOpen()) {
- accessibleProjects.add(allProjects[i]);
+ public TreePath[] getParents(Object element) {
+ if (element instanceof IProject){
+ ArrayList treePaths = new ArrayList();
+ IWorkingSet[] workingSets = TeamUIPlugin.getPlugin().getWorkbench().getWorkingSetManager().getWorkingSets();
+ for (int i = 0; i < workingSets.length; i++) {
+ IAdaptable[] elements = workingSets[i].getElements();
+ for (int j = 0; j < elements.length; j++) {
+ if (elements[j].equals(element)){
+ treePaths.add(workingSets[i]);
+ break;
+ }
}
}
- return accessibleProjects.toArray();
- }
-
- return super.getChildren(element);
- }
- }
-
- class WorkspaceDialog extends TitleAreaDialog {
-
- protected TreeViewer wsTreeViewer;
- protected Text wsFilenameText;
- protected IContainer wsContainer;
- protected Image dlgTitleImage;
-
- public WorkspaceDialog(Shell shell) {
- super(shell);
- }
-
- protected Control createContents(Composite parent) {
- Control control = super.createContents(parent);
- setTitle(TeamUIMessages.ExportProjectSetMainPage_WorkspaceDialogTitle);
- setMessage(TeamUIMessages.ExportProjectSetMainPage_WorkspaceDialogTitleMessage);
-
- return control;
- }
-
- protected Control createDialogArea(Composite parent) {
- Composite composite = (Composite) super.createDialogArea(parent);
-
- GridLayout layout = new GridLayout();
- layout.numColumns = 1;
- composite.setLayout(layout);
- final GridData data = new GridData(SWT.FILL, SWT.FILL, true, false);
- composite.setLayoutData(data);
-
- getShell().setText(TeamUIMessages.ExportProjectSetMainPage_WorkspaceDialogMessage);
-
- wsTreeViewer = new TreeViewer(composite, SWT.BORDER);
- final GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
- gd.widthHint = 550;
- gd.heightHint = 250;
- wsTreeViewer.getTree().setLayoutData(gd);
-
- wsTreeViewer.setContentProvider(new LocationPageContentProvider());
- wsTreeViewer.setLabelProvider(new WorkbenchLabelProvider());
- wsTreeViewer.setInput(ResourcesPlugin.getWorkspace());
-
- final Composite group = new Composite(composite, SWT.NONE);
- layout = new GridLayout(2, false);
- layout.marginWidth = 0;
- group.setLayout(layout);
- group.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
-
- final Label label = new Label(group, SWT.NONE);
- label.setLayoutData(new GridData());
- label.setText(TeamUIMessages.ExportProjectSetMainPage_WorkspaceDialogFilename);
-
- wsFilenameText = new Text(group, SWT.BORDER);
- wsFilenameText.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
- wsFilenameText.setText("projectSet.psf"); //$NON-NLS-1$
-
- setupListeners();
-
- return parent;
- }
-
- protected void okPressed() {
- //make sure that a filename has been typed in
-
- String patchName = wsFilenameText.getText();
-
- if (patchName.equals("")) { //$NON-NLS-1$
- setErrorMessage(TeamUIMessages.ExportProjectSetMainPage_WorkspaceDialogErrorNoFilename);
- return;
+ return (TreePath[]) treePaths.toArray(new TreePath[treePaths.size()]);
}
-
- //make sure that the filename does not contain more than one segment
- if (!(ResourcesPlugin.getWorkspace().validateName(patchName, IResource.FILE)).isOK()) {
- wsFilenameText.setText(""); //$NON-NLS-1$
- setErrorMessage(TeamUIMessages.ExportProjectSetMainPage_WorkspaceDialogErrorFilenameSegments);
- return;
- }
-
- //Make sure that a container has been selected
- if (wsContainer == null) {
- getSelectedContainer();
- }
- //Assert.isNotNull(wsContainer);
-
- workspaceFile = wsContainer.getFile(new Path(wsFilenameText.getText()));
- if (workspaceFile != null) {
- workspaceText.setText(workspaceFile.getFullPath().toString());
- }
- //this.page.validatePage();
- //workspaceText.setText(wsFilenameText.getText());
- super.okPressed();
- }
-
- private void getSelectedContainer() {
- Object obj = ((IStructuredSelection) wsTreeViewer.getSelection()).getFirstElement();
-
- if (obj instanceof IContainer)
- wsContainer = (IContainer) obj;
- else if (obj instanceof IFile) {
- wsContainer = ((IFile) obj).getParent();
- }
- }
-
- protected void cancelPressed() {
- //this.page.validatePage();
- getSelectedContainer();
- super.cancelPressed();
+ return null;
}
- public boolean close() {
- /* if (dlgTitleImage != null)
- dlgTitleImage.dispose();*/
- return super.close();
+ public boolean hasChildren(TreePath path) {
+ Object obj = path.getLastSegment();
+ if (obj instanceof IWorkingSet)
+ return true;
+
+ return false;
}
- void setupListeners() {
- wsTreeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
- public void selectionChanged(SelectionChangedEvent event) {
- IStructuredSelection s = (IStructuredSelection) event.getSelection();
- Object obj = s.getFirstElement();
- if (obj != null) {
-
+ public Object[] getElements(Object inputElement) {
+ if (inputElement instanceof IWorkspaceRoot) {
+ IWorkspaceRoot root = (IWorkspaceRoot) inputElement;
+ List projectList = new ArrayList();
+ IProject[] workspaceProjects = root.getProjects();
+ for (int i = 0; i < workspaceProjects.length; i++) {
+ if (RepositoryProvider.getProvider(workspaceProjects[i]) != null) {
+ projectList.add(workspaceProjects[i]);
}
- if (obj instanceof IContainer)
- wsContainer = (IContainer) obj;
- else if (obj instanceof IFile) {
- IFile tempFile = (IFile) obj;
- wsContainer = tempFile.getParent();
- wsFilenameText.setText(tempFile.getName());
+ }
+ return projectList.toArray(new IProject[projectList.size()]);
+ } else if (inputElement instanceof IWorkingSetManager){
+ IWorkingSetManager manager = (IWorkingSetManager) inputElement;
+ IWorkingSet[] allSets = manager.getAllWorkingSets();
+ ArrayList resourceSets = new ArrayList();
+ for (int i = 0; i < allSets.length; i++) {
+ String id = allSets[i].getId();
+ if (id != null && id.equals(WorkingSetsDialog.resourceWorkingSetId)) {
+ resourceSets.add(allSets[i]);
}
}
- });
-
- wsTreeViewer.addDoubleClickListener(new IDoubleClickListener() {
- public void doubleClick(DoubleClickEvent event) {
- ISelection s = event.getSelection();
- if (s instanceof IStructuredSelection) {
- Object item = ((IStructuredSelection) s).getFirstElement();
- if (wsTreeViewer.getExpandedState(item))
- wsTreeViewer.collapseToLevel(item, 1);
- else
- wsTreeViewer.expandToLevel(item, 1);
+
+ return resourceSets.toArray(new IWorkingSet[resourceSets.size()]);
+ } else if (inputElement instanceof IAdaptable){
+ Object tempProject = ((IAdaptable) inputElement).getAdapter(IProject.class);
+ if (tempProject != null){
+ return new IProject[]{((IProject)tempProject)};
+ }
+ }
+ else if (inputElement instanceof IAdaptable[]){
+ IAdaptable[] tempAdaptable = (IAdaptable[]) inputElement;
+ List projectList = new ArrayList();
+ for (int i = 0; i < tempAdaptable.length; i++) {
+ if (tempAdaptable[i].getAdapter(IProject.class) != null){
+ projectList.add(tempAdaptable[i]);
}
}
- });
+ return projectList.toArray(new IProject[projectList.size()]);
+ } else if (inputElement instanceof HashSet){
+ HashSet tempList = (HashSet) inputElement;
+ return (IProject[]) tempList.toArray(new IProject[tempList.size()]);
+ }
+
+ return null;
+ }
- wsFilenameText.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- setErrorMessage(null);
- }
- });
+ public void dispose() {
+
}
- }
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+
+ }
+
+ };
+
public ExportProjectSetMainPage(String pageName, String title, ImageDescriptor titleImage) {
super(pageName, title, titleImage);
setDescription(TeamUIMessages.ExportProjectSetMainPage_description);
@@ -242,279 +149,478 @@ public class ExportProjectSetMainPage extends TeamWizardPage {
* @see IDialogPage#createControl(Composite)
*/
public void createControl(Composite parent) {
- Composite composite = createComposite(parent, 1);
- initializeDialogUnits(composite);
-
+ Composite c = SWTUtils.createHVFillComposite(parent, 0);
+
+ //Add the export working set section
+ exportWorkingSets(c);
+
+ book = new PageBook(c, SWT.NONE);
+ book.setLayoutData(SWTUtils.createHVFillGridData());
// set F1 help
- PlatformUI.getWorkbench().getHelpSystem().setHelp(composite, IHelpContextIds.EXPORT_PROJECT_SET_PAGE);
-
- createLabel(composite, TeamUIMessages.ExportProjectSetMainPage_Select_the_projects_to_include_in_the_project_set__2);
-
- table = new Table(composite, SWT.CHECK | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
- tableViewer = new CheckboxTableViewer(table);
- table.setLayout(new TableLayout());
- GridData data = new GridData(GridData.FILL_BOTH);
- data.heightHint = 300;
- table.setLayoutData(data);
- tableViewer.setContentProvider(new ProjectContentProvider());
- tableViewer.setLabelProvider(new WorkbenchLabelProvider());
- tableViewer.addCheckStateListener(new ICheckStateListener() {
- public void checkStateChanged(CheckStateChangedEvent event) {
- IProject project = (IProject) event.getElement();
- if (event.getChecked()) {
- selectedProjects.add(project);
- } else {
- selectedProjects.remove(project);
- }
- updateEnablement();
- }
- });
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(book, IHelpContextIds.EXPORT_PROJECT_SET_PAGE);
+
+ projectPage = new ProjectPage();
+ projectPage.createControl(book);
+
+ workingSetPage = new WorkingSetPage();
+ workingSetPage.createControl(book);
+
+ setControl(c);
+ book.showPage(projectPage.getControl());
+
+ selectedPage = projectPage;
+ //pass in any selected
+ projectPage.getSelectedProjects().addAll(passedInSelectedProjects);
+ projectPage.getReferenceCountProjects().addAll(passedInSelectedProjects);
+
+ Dialog.applyDialogFont(parent);
+ }
- Composite buttonComposite = new Composite(composite, SWT.NONE);
- GridLayout layout = new GridLayout();
- layout.numColumns = 2;
- layout.marginWidth = 0;
- buttonComposite.setLayout(layout);
- data = new GridData(SWT.FILL, SWT.FILL, true, false);
- buttonComposite.setLayoutData(data);
-
- Button selectAll = new Button(buttonComposite, SWT.PUSH);
- data = new GridData();
- data.verticalAlignment = GridData.BEGINNING;
- data.horizontalAlignment = GridData.END;
- int widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
- data.widthHint = Math.max(widthHint, selectAll.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x);
- selectAll.setLayoutData(data);
- selectAll.setText(TeamUIMessages.ExportProjectSetMainPage_SelectAll);
- selectAll.addListener(SWT.Selection, new Listener() {
- public void handleEvent(Event event) {
- tableViewer.setAllChecked(true);
- selectedProjects.removeAll(selectedProjects);
- Object[] checked = tableViewer.getCheckedElements();
- for (int i = 0; i < checked.length; i++) {
- selectedProjects.add(checked[i]);
+
+
+
+
+ private void exportWorkingSets(Composite composite) {
+ exportWorkingSets = new Button(composite, SWT.CHECK | SWT.LEFT);
+ exportWorkingSets.setText(TeamUIMessages.ExportProjectSetMainPage_ExportWorkingSets);
+
+ exportWorkingSets.setSelection(false);
+ exportWorkingSets.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ if (((Button) e.widget).getSelection()){
+ book.showPage(workingSetPage.getControl());
+ selectedPage = workingSetPage;
+ workingSetPage.refresh();
+ }
+ else{
+ book.showPage(projectPage.getControl());
+ selectedPage = projectPage;
}
- updateEnablement();
- }
- });
-
- Button deselectAll = new Button(buttonComposite, SWT.PUSH);
- data = new GridData();
- data.verticalAlignment = GridData.BEGINNING;
- data.horizontalAlignment = GridData.END;
- widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
- data.widthHint = Math.max(widthHint, deselectAll.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x);
- deselectAll.setLayoutData(data);
- deselectAll.setText(TeamUIMessages.ExportProjectSetMainPage_DeselectAll);
- deselectAll.addListener(SWT.Selection, new Listener() {
- public void handleEvent(Event event) {
- tableViewer.setAllChecked(false);
- selectedProjects.removeAll(selectedProjects);
- updateEnablement();
}
});
+ }
+
+ public IWorkingSet[] getSelectedWorkingSets(){
+ return (IWorkingSet[]) selectedPage.getWorkingSet().toArray(new IWorkingSet[selectedPage.getWorkingSet().size()]);
+ }
+
+ public IProject[] getSelectedProjects() {
+ return (IProject[]) selectedPage.getSelectedProjects().toArray(new IProject[selectedPage.getSelectedProjects().size()]);
+ }
- Group locationGroup = new Group(composite, SWT.None);
- layout = new GridLayout();
- locationGroup.setLayout(layout);
- data = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL);
- locationGroup.setLayoutData(data);
- locationGroup.setText(TeamUIMessages.ExportProjectSetMainPage_Project_Set_File_Name__3);
-
- createExportToFile(locationGroup);
-
- createExportToWorkspace(locationGroup);
-
- saveToFileSystem = true;
-
- initializeProjects();
- setControl(composite);
- updateEnablement();
- Dialog.applyDialogFont(parent);
+ public void setSelectedProjects(IProject[] selectedProjects) {
+ passedInSelectedProjects.addAll(Arrays.asList(selectedProjects));
+ }
+
+ private interface IExportProjectSetPage{
+ HashSet getSelectedProjects();
+ ArrayList getReferenceCountProjects();
+ ArrayList getWorkingSet();
}
+
+ private class ProjectPage extends Page implements IExportProjectSetPage {
+ private Composite projectComposite;
+
+ private CheckboxTableViewer tableViewer;
+ private Table table;
+
+ HashSet selectedProjects = new HashSet();
+ ArrayList referenceCountProjects = new ArrayList();
+ ArrayList selectedWorkingSet = new ArrayList();
+
+ public void createControl(Composite parent) {
+ //projectComposite = createComposite(parent, 1);
+
+ projectComposite = new Composite(parent, SWT.NULL);
+
+ // GridLayout
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 1;
+ projectComposite.setLayout(layout);
+
+ // GridData
+ GridData data = new GridData();
+ data.verticalAlignment = GridData.FILL;
+ data.horizontalAlignment = GridData.FILL;
+ data.grabExcessHorizontalSpace=true;
+ data.grabExcessVerticalSpace=true;
+ projectComposite.setLayoutData(data);
+
+ initializeDialogUnits(projectComposite);
+
+ //Adds the project table
+ addProjectSection(projectComposite);
+ initializeProjects();
+ updateEnablement();
+ }
- private void createExportToFile(Composite composite) {
- fileRadio = new Button(composite, SWT.RADIO);
- fileRadio.setText(TeamUIMessages.ExportProjectSetMainPage_FileButton);
- fileRadio.addListener(SWT.Selection, new Listener() {
- public void handleEvent(Event event) {
- saveToFileSystem = true;
- updateEnablement();
- }
- });
+ public Control getControl() {
+ return projectComposite;
+ }
- Composite inner = new Composite(composite, SWT.NONE);
- GridLayout layout = new GridLayout();
- layout.numColumns = 2;
- layout.marginWidth = 0;
- inner.setLayout(layout);
- GridData data = new GridData(SWT.FILL, SWT.FILL, true, false);
- inner.setLayoutData(data);
-
- fileCombo = createDropDownCombo(inner);
- file = PsfFilenameStore.getSuggestedDefault();
- fileCombo.setItems(PsfFilenameStore.getHistory());
- fileCombo.setText(file);
- fileCombo.addListener(SWT.Modify, new Listener() {
- public void handleEvent(Event event) {
- file = fileCombo.getText();
- updateEnablement();
- }
- });
+ public void setFocus() {
+ projectComposite.setFocus();
+ }
+
+ private void addProjectSection(Composite composite) {
+
+ createLabel(composite, TeamUIMessages.ExportProjectSetMainPage_Select_the_projects_to_include_in_the_project_set__2);
+
+ table = new Table(composite, SWT.CHECK | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
+ tableViewer = new CheckboxTableViewer(table);
+ table.setLayout(new TableLayout());
+ GridData data = new GridData(GridData.FILL_BOTH);
+ data.heightHint = 300;
+ table.setLayoutData(data);
+ tableViewer.setContentProvider(new ProjectContentProvider());
+ tableViewer.setLabelProvider(new WorkbenchLabelProvider());
+ tableViewer.addCheckStateListener(new ICheckStateListener() {
+ public void checkStateChanged(CheckStateChangedEvent event) {
+ Object temp = event.getElement();
+ if (temp instanceof IProject){
+ IProject project = (IProject) event.getElement();
+ if (event.getChecked()) {
+ selectedProjects.add(project);
+ referenceCountProjects.add(project);
+ } else {
+ selectedProjects.remove(project);
+ referenceCountProjects.remove(project);
+ }
+ } else if (temp instanceof IWorkingSet){
+ IWorkingSet workingSet = (IWorkingSet) temp;
+ if (event.getChecked()){
+ IAdaptable[] elements = workingSet.getElements();
+ for (int i = 0; i < elements.length; i++) {
+ selectedProjects.add(elements[i]);
+ }
+ } else {
+ IAdaptable[] elements = workingSet.getElements();
+ for (int i = 0; i < elements.length; i++) {
+ selectedProjects.remove(elements[i]);
+ }
+ }
+ }
+ updateEnablement();
+ }
+ });
- browseButton = new Button(inner, SWT.PUSH);
- browseButton.setText(TeamUIMessages.ExportProjectSetMainPage_Browse_4);
- data = new GridData();
- data.horizontalAlignment = GridData.FILL;
- int widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
- data.widthHint = Math.max(widthHint, browseButton.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x);
- browseButton.setLayoutData(data);
- browseButton.addListener(SWT.Selection, new Listener() {
- public void handleEvent(Event event) {
- if (!isSaveToFileSystem())
- saveToFileSystem = true;
-
- FileDialog d = new FileDialog(getShell(), SWT.SAVE);
- d.setFilterExtensions(new String[] {"*.psf"}); //$NON-NLS-1$
- d.setFilterNames(new String[] {TeamUIMessages.ExportProjectSetMainPage_Project_Set_Files_3});
- d.setFileName(TeamUIMessages.ExportProjectSetMainPage_default);
- String fileName = getFileName();
- if (fileName != null) {
- int separator = fileName.lastIndexOf(System.getProperty("file.separator").charAt(0)); //$NON-NLS-1$
- if (separator != -1) {
- fileName = fileName.substring(0, separator);
+ Composite buttonComposite = new Composite(composite, SWT.NONE);
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 2;
+ layout.marginWidth = 0;
+ buttonComposite.setLayout(layout);
+ data = new GridData(SWT.FILL, SWT.FILL, true, false);
+ buttonComposite.setLayoutData(data);
+
+ Button selectAll = new Button(buttonComposite, SWT.PUSH);
+ data = new GridData();
+ data.verticalAlignment = GridData.BEGINNING;
+ data.horizontalAlignment = GridData.END;
+ int widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
+ data.widthHint = Math.max(widthHint, selectAll.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x);
+ selectAll.setLayoutData(data);
+ selectAll.setText(TeamUIMessages.ExportProjectSetMainPage_SelectAll);
+ selectAll.addListener(SWT.Selection, new Listener() {
+ public void handleEvent(Event event) {
+ tableViewer.setAllChecked(true);
+ selectedProjects.removeAll(selectedProjects);
+ Object[] checked = tableViewer.getCheckedElements();
+ for (int i = 0; i < checked.length; i++) {
+ selectedProjects.add(checked[i]);
}
+ updateEnablement();
}
- d.setFilterPath(fileName);
- String f = d.open();
- if (f != null) {
- fileCombo.setText(f);
- file = f;
+ });
+
+ Button deselectAll = new Button(buttonComposite, SWT.PUSH);
+ data = new GridData();
+ data.verticalAlignment = GridData.BEGINNING;
+ data.horizontalAlignment = GridData.END;
+ widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
+ data.widthHint = Math.max(widthHint, deselectAll.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x);
+ deselectAll.setLayoutData(data);
+ deselectAll.setText(TeamUIMessages.ExportProjectSetMainPage_DeselectAll);
+ deselectAll.addListener(SWT.Selection, new Listener() {
+ public void handleEvent(Event event) {
+ tableViewer.setAllChecked(false);
+ selectedProjects.removeAll(selectedProjects);
+ updateEnablement();
}
+ });
+ }
+
+ private void initializeProjects() {
+ tableViewer.setInput(ResourcesPlugin.getWorkspace().getRoot());
+
+ // Check any necessary projects
+ if (selectedProjects != null) {
+ tableViewer.setCheckedElements(selectedProjects.toArray(new IProject[selectedProjects.size()]));
}
- });
- }
-
- private void createExportToWorkspace(Composite composite) {
- workspaceRadio = new Button(composite, SWT.RADIO);
- workspaceRadio.setText(TeamUIMessages.ExportProjectSetMainPage_WorkspaceButton);
- workspaceRadio.addListener(SWT.Selection, new Listener() {
- public void handleEvent(Event event) {
- saveToFileSystem = false;
- updateEnablement();
+ }
+
+ private void updateEnablement() {
+ boolean complete;
+
+ complete = (selectedProjects.size() != 0);
+
+ if (complete) {
+ setMessage(null);
}
- });
+ setPageComplete(complete);
+ }
- final Composite nameGroup = new Composite(composite, SWT.NONE);
- GridLayout layout = new GridLayout();
- layout.numColumns = 2;
- layout.marginWidth = 0;
- nameGroup.setLayout(layout);
- final GridData data = new GridData(SWT.FILL, SWT.FILL, true, false);
- nameGroup.setLayoutData(data);
-
- workspaceText = createTextField(nameGroup);
- workspaceText.setEditable(false);
- workspaceText.addListener(SWT.Modify, new Listener() {
- public void handleEvent(Event event) {
- file = workspaceFile.getLocation().toString();
- updateEnablement();
- }
- });
- Button wsBrowseButton = new Button(nameGroup, SWT.PUSH);
- GridData gd = new GridData();
- gd.horizontalAlignment = GridData.FILL;
- int widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
- gd.widthHint = Math.max(widthHint, wsBrowseButton.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x);
- wsBrowseButton.setLayoutData(gd);
- wsBrowseButton.setText(TeamUIMessages.ExportProjectSetMainPage_Browse);
- wsBrowseButton.addListener(SWT.Selection, new Listener() {
- public void handleEvent(Event event) {
- if (isSaveToFileSystem())
- saveToFileSystem = false;
-
- WorkspaceDialog d = new WorkspaceDialog(getShell());
- d.open();
- }
- });
- }
+ public ArrayList getReferenceCountProjects() {
+ return referenceCountProjects;
+ }
- private void initializeProjects() {
- List projectList = new ArrayList();
- IProject[] workspaceProjects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
- for (int i = 0; i < workspaceProjects.length; i++) {
- if (RepositoryProvider.getProvider(workspaceProjects[i]) != null) {
- projectList.add(workspaceProjects[i]);
- }
+ public HashSet getSelectedProjects() {
+ return selectedProjects;
}
- tableViewer.setInput(projectList.toArray(new IProject[projectList.size()]));
- // Check any necessary projects
- if (selectedProjects != null) {
- tableViewer.setCheckedElements(selectedProjects.toArray(new IProject[selectedProjects.size()]));
+
+ public ArrayList getWorkingSet() {
+ return selectedWorkingSet;
}
+
}
- private void updateEnablement() {
- boolean complete;
- //update radio buttons
- fileRadio.setSelection(saveToFileSystem);
- workspaceRadio.setSelection(!saveToFileSystem);
-
- if (selectedProjects.size() == 0) {
- setMessage(null);
- complete = false;
- } else if (file.length() == 0) {
- setMessage(null);
- complete = false;
- } else {
- File f = new File(file);
- if (f.isDirectory()) {
- setMessage(TeamUIMessages.ExportProjectSetMainPage_You_have_specified_a_folder_5, ERROR);
- complete = false;
- } else {
- if (!isSaveToFileSystem() && workspaceFile == null)
- complete = false;
- else
- complete = true;
+ private class WorkingSetPage extends Page implements IExportProjectSetPage {
+
+ private Composite projectComposite;
+ private Table wsTable;
+ private CheckboxTableViewer wsTableViewer;
+
+ private Table table;
+ private TableViewer tableViewer;
+
+
+ HashSet selectedProjects = new HashSet();
+ ArrayList referenceCountProjects = new ArrayList();
+ ArrayList selectedWorkingSet = new ArrayList();
+
+ public void createControl(Composite parent) {
+
+ projectComposite = SWTUtils.createHVFillComposite(parent, 0, 2);
+ initializeDialogUnits(projectComposite);
+
+ Label label = createLabel (projectComposite, TeamUIMessages.ExportProjectSetMainPage_SelectButton);
+ GridData grid = (GridData) label.getLayoutData();
+ grid.horizontalSpan = 2;
+ label.setData(grid);
+
+ //Adds the working set table
+ addWorkingSetSection(projectComposite);
+
+ addProjectSection(projectComposite);
+
+ addButtons(projectComposite);
+ updateEnablement();
+ }
+
+ private void addProjectSection(Composite composite) {
+
+ table = new Table(composite, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
+ tableViewer = new TableViewer(table);
+ table.setLayout(new TableLayout());
+ GridData data = new GridData(GridData.FILL_BOTH);
+ data.heightHint = 300;
+ table.setLayoutData(data);
+ tableViewer.setContentProvider(new ProjectContentProvider());
+ tableViewer.setLabelProvider(new WorkbenchLabelProvider());
}
+
+ private void addWorkingSetSection(Composite projectComposite) {
+
+ wsTable = new Table(projectComposite, SWT.CHECK | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
+ wsTableViewer = new CheckboxTableViewer(wsTable);
+ wsTable.setLayout(new TableLayout());
+ GridData data = new GridData(GridData.FILL_BOTH);
+ data.heightHint = 300;
+ wsTable.setLayoutData(data);
+ wsTableViewer.setContentProvider(new ProjectContentProvider());
+ wsTableViewer.setLabelProvider(new WorkbenchLabelProvider());
+ wsTableViewer.addCheckStateListener(new ICheckStateListener() {
+ public void checkStateChanged(CheckStateChangedEvent event) {
+ Object temp = event.getElement();
+ if (temp instanceof IWorkingSet){
+ IWorkingSet workingSet = (IWorkingSet) temp;
+ if (event.getChecked()){
+ workingSetAdded(workingSet);
+ //Add the selected project to the table viewer
+ tableViewer.setInput(selectedProjects);
+ } else {
+ workingSetRemoved(workingSet);
+ //Add the selected project to the table viewer
+ tableViewer.setInput(selectedProjects);
+ }
+ }
+ updateEnablement();
+ }
+ });
+
+ wsTableViewer.setInput(TeamUIPlugin.getPlugin().getWorkbench().getWorkingSetManager());
}
- if (complete) {
- setMessage(null);
+
+ private void addButtons(Composite projectComposite){
+
+ Composite buttonComposite = new Composite(projectComposite, SWT.NONE);
+ GridLayout layout = new GridLayout();
+ layout.numColumns = 3;
+ layout.marginWidth = 0;
+ buttonComposite.setLayout(layout);
+ GridData data = new GridData(SWT.FILL, SWT.FILL, false, false);
+ buttonComposite.setLayoutData(data);
+
+ Button selectAll = new Button(buttonComposite, SWT.PUSH);
+ data = new GridData();
+ data.verticalAlignment = GridData.FILL;
+ data.horizontalAlignment = GridData.FILL;
+ int widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
+ data.widthHint = Math.max(widthHint, selectAll.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x);
+ selectAll.setLayoutData(data);
+ selectAll.setText(TeamUIMessages.ExportProjectSetMainPage_SelectAll);
+ selectAll.addListener(SWT.Selection, new Listener() {
+ public void handleEvent(Event event) {
+ wsTableViewer.setAllChecked(true);
+
+ selectedProjects.removeAll(selectedProjects);
+ selectedWorkingSet.removeAll(selectedWorkingSet);
+ Object[] checked = wsTableViewer.getCheckedElements();
+ for (int i = 0; i < checked.length; i++) {
+ selectedWorkingSet.add(checked[i]);
+ if (checked[i] instanceof IWorkingSet){
+ IWorkingSet ws = (IWorkingSet) checked[i];
+ IAdaptable[] elements = ws.getElements();
+ selectedProjects.addAll(Arrays.asList(elements));
+ referenceCountProjects.addAll(Arrays.asList(elements));
+ }
+ tableViewer.setInput(selectedProjects);
+ }
+ updateEnablement();
+ }
+ });
+
+ Button deselectAll = new Button(buttonComposite, SWT.PUSH);
+ data = new GridData();
+ data.verticalAlignment = GridData.FILL;
+ data.horizontalAlignment = GridData.FILL;
+ widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
+ data.widthHint = Math.max(widthHint, deselectAll.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x);
+ deselectAll.setLayoutData(data);
+ deselectAll.setText(TeamUIMessages.ExportProjectSetMainPage_DeselectAll);
+ deselectAll.addListener(SWT.Selection, new Listener() {
+ public void handleEvent(Event event) {
+ wsTableViewer.setAllChecked(false);
+ selectedWorkingSet.removeAll(selectedWorkingSet);
+ selectedProjects.removeAll(selectedProjects);
+ referenceCountProjects.removeAll(selectedProjects);
+ tableViewer.setInput(selectedProjects);
+ updateEnablement();
+ }
+ });
+
+ Button newWorkingSet = new Button(buttonComposite, SWT.PUSH);
+ data = new GridData();
+ data.verticalAlignment = GridData.FILL;
+ data.horizontalAlignment = GridData.FILL;
+ widthHint = convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH);
+ data.widthHint = Math.max(widthHint, deselectAll.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x);
+ newWorkingSet.setLayoutData(data);
+ newWorkingSet.setText(TeamUIMessages.ExportProjectSetMainPage_EditButton);
+ newWorkingSet.addListener(SWT.Selection, new Listener() {
+ public void handleEvent(Event event) {
+ final IWorkingSetManager workingSetManager = TeamUIPlugin.getPlugin().getWorkbench().getWorkingSetManager();
+ IWorkingSetSelectionDialog wsWizard = workingSetManager.createWorkingSetSelectionDialog(getShell(), false);
+ if (wsWizard != null) {
+ IPropertyChangeListener propListener = null;
+ try {
+ //add event listener
+ propListener = new IPropertyChangeListener() {
+ public void propertyChange(PropertyChangeEvent event) {
+
+ }};
+
+ workingSetManager.addPropertyChangeListener(propListener);
+ wsWizard.open();
+ //recalculate working sets
+ selectedWorkingSet.removeAll(selectedWorkingSet);
+ referenceCountProjects.removeAll(selectedProjects);
+ selectedProjects.removeAll(selectedProjects);
+ wsTableViewer.setInput(workingSetManager);
+ Object[] checked = wsTableViewer.getCheckedElements();
+ for (int i = 0; i < checked.length; i++) {
+ selectedWorkingSet.add(checked[i]);
+ if (checked[i] instanceof IWorkingSet) {
+ IWorkingSet ws = (IWorkingSet) checked[i];
+ IAdaptable[] elements = ws.getElements();
+ selectedProjects.addAll(Arrays.asList(elements));
+ referenceCountProjects.addAll(Arrays.asList(elements));
+ }
+
+ }
+
+ wsTableViewer.setInput(workingSetManager);
+ tableViewer.setInput(selectedProjects);
+ } finally {
+ if (propListener != null)
+ workingSetManager.removePropertyChangeListener(propListener);
+ }
+ }
+ }
+ });
+ }
+
+ public Control getControl() {
+ return projectComposite;
}
- setPageComplete(complete);
- }
- public String getFileName() {
- return file;
- }
+ public void setFocus() {
+ projectComposite.setFocus();
+ }
- public void setFileName(String file) {
- if (file != null) {
- this.file = file;
+ public void refresh(){
+ wsTableViewer.setInput(TeamUIPlugin.getPlugin().getWorkbench().getWorkingSetManager());
+ }
+
+ private void updateEnablement() {
+ boolean complete;
+
+ complete = ((selectedProjects.size() != 0) && (selectedWorkingSet.size() != 0));
+
+ if (complete) {
+ setMessage(null);
+ }
+ setPageComplete(complete);
}
- }
- public IProject[] getSelectedProjects() {
- return (IProject[]) selectedProjects.toArray(new IProject[selectedProjects.size()]);
- }
+ public ArrayList getReferenceCountProjects() {
+ return referenceCountProjects;
+ }
- public void setSelectedProjects(IProject[] selectedProjects) {
- this.selectedProjects.addAll(Arrays.asList(selectedProjects));
- }
+ public HashSet getSelectedProjects() {
+ return selectedProjects;
+ }
- public void setVisible(boolean visible) {
- super.setVisible(visible);
- if (visible) {
- fileCombo.setFocus();
+ public ArrayList getWorkingSet() {
+ return selectedWorkingSet;
}
- }
- public boolean isSaveToFileSystem() {
- return saveToFileSystem;
- }
+ private void workingSetAdded(IWorkingSet workingSet) {
+ IAdaptable[] elements = workingSet.getElements();
+ selectedWorkingSet.add(workingSet);
+ for (int i = 0; i < elements.length; i++) {
+ selectedProjects.add(elements[i]);
+ referenceCountProjects.add(elements[i]);
+ }
+ }
- public void refreshWorkspaceFile(IProgressMonitor monitor) throws CoreException {
- if (workspaceFile != null)
- workspaceFile.refreshLocal(IResource.DEPTH_ONE, monitor);
+ private void workingSetRemoved(IWorkingSet workingSet) {
+ IAdaptable[] elements = workingSet.getElements();
+ selectedWorkingSet.remove(workingSet);
+ selectedProjects.removeAll(Arrays.asList(elements));
+ for (int i = 0; i < elements.length; i++) {
+ referenceCountProjects.remove(elements[i]);
+ }
+ selectedProjects.addAll(referenceCountProjects);
+ }
}
}
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/wizards/ProjectSetExportWizard.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/wizards/ProjectSetExportWizard.java
index c803d4cd0..64636911d 100644
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/wizards/ProjectSetExportWizard.java
+++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/wizards/ProjectSetExportWizard.java
@@ -12,11 +12,10 @@ package org.eclipse.team.internal.ui.wizards;
import java.io.*;
import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.*;
@@ -27,11 +26,13 @@ import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.team.core.*;
import org.eclipse.team.internal.ui.*;
-import org.eclipse.ui.IExportWizard;
-import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.*;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
public class ProjectSetExportWizard extends Wizard implements IExportWizard {
ExportProjectSetMainPage mainPage;
+ ExportProjectSetLocationPage locationPage;
IStructuredSelection selection;
public ProjectSetExportWizard() {
@@ -42,15 +43,18 @@ public class ProjectSetExportWizard extends Wizard implements IExportWizard {
public void addPages() {
mainPage = new ExportProjectSetMainPage("projectSetMainPage", TeamUIMessages.ProjectSetExportWizard_Export_a_Project_Set_3, TeamUIPlugin.getImageDescriptor(ITeamUIImages.IMG_PROJECTSET_EXPORT_BANNER)); //$NON-NLS-1$
IProject[] projects = (IProject[])selection.toList().toArray(new IProject[0]);
- mainPage.setSelectedProjects(projects);
addPage(mainPage);
+ mainPage.setSelectedProjects(projects);
+ locationPage = new ExportProjectSetLocationPage("projectSetLocationPage", TeamUIMessages.ProjectSetExportWizard_Export_a_Project_Set_3, TeamUIPlugin.getImageDescriptor(ITeamUIImages.IMG_PROJECTSET_EXPORT_BANNER)); //$NON-NLS-1$
+ addPage(locationPage);
+
}
public boolean performFinish() {
final boolean[] result = new boolean[] {false};
try {
getContainer().run(false, false, new IRunnableWithProgress() {
public void run(IProgressMonitor monitor) throws InvocationTargetException {
- String filename = mainPage.getFileName();
+ String filename = locationPage.getFileName();
Path path = new Path(filename);
if (path.getFileExtension() == null) {
filename = filename + ".psf"; //$NON-NLS-1$
@@ -78,7 +82,11 @@ public class ProjectSetExportWizard extends Wizard implements IExportWizard {
return;
}
}
-
+
+ IWorkingSet[] workingSets = null;
+ if (mainPage.exportWorkingSets.getSelection()){
+ workingSets = mainPage.getSelectedWorkingSets();
+ }
// Hash the projects by provider
IProject[] projects = mainPage.getSelectedProjects();
Map map = new HashMap();
@@ -102,21 +110,14 @@ public class ProjectSetExportWizard extends Wizard implements IExportWizard {
try {
writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8")); //$NON-NLS-1$
- writer.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); //$NON-NLS-1$
- writer.newLine();
- writer.write("<psf version=\"2.0\">"); //$NON-NLS-1$
- writer.newLine();
-
- // For each provider id, do the writing
-
+ //
+ XMLMemento xmlMemento = getXMLMementoRoot();
Iterator it = map.keySet().iterator();
monitor.beginTask(null, 1000 * map.keySet().size());
while (it.hasNext()) {
String id = (String)it.next();
- writer.write("\t<provider id=\""); //$NON-NLS-1$
- writer.write(id);
- writer.write("\">"); //$NON-NLS-1$
- writer.newLine();
+ IMemento memento = xmlMemento.createChild("provider"); //$NON-NLS-1$
+ memento.putString("id", id); //$NON-NLS-1$
List list = (List)map.get(id);
IProject[] projectArray = (IProject[])list.toArray(new IProject[list.size()]);
RepositoryProviderType providerType = RepositoryProviderType.getProviderType(id);
@@ -125,17 +126,18 @@ public class ProjectSetExportWizard extends Wizard implements IExportWizard {
if (serializer != null) {
String[] references = serializer.asReference(projectArray, context, new SubProgressMonitor(monitor, 990));
for (int i = 0; i < references.length; i++) {
- writer.write("\t\t<project reference=\""); //$NON-NLS-1$
- writer.write(references[i]);
- writer.write("\"/>"); //$NON-NLS-1$
- writer.newLine();
+ IMemento proj = memento.createChild("project"); //$NON-NLS-1$
+ proj.putString("reference", references[i]); //$NON-NLS-1$
}
}
- writer.write("\t</provider>"); //$NON-NLS-1$
- writer.newLine();
}
- writer.write("</psf>"); //$NON-NLS-1$
- writer.newLine();
+ if (workingSets != null){
+ for (int i = 0; i < workingSets.length; i++) {
+ IMemento memento =xmlMemento.createChild("workingSets"); //$NON-NLS-1$
+ workingSets[i].saveState(memento);
+ }
+ }
+ xmlMemento.save(writer);
result[0] = true;
} catch (IOException e) {
throw new InvocationTargetException(e);
@@ -152,9 +154,9 @@ public class ProjectSetExportWizard extends Wizard implements IExportWizard {
}
// if file was written to the workspace, refresh it
- if (!mainPage.isSaveToFileSystem())
+ if (!locationPage.isSaveToFileSystem())
try {
- mainPage.refreshWorkspaceFile(monitor);
+ locationPage.refreshWorkspaceFile(monitor);
} catch (CoreException e) {
//throw away
}
@@ -173,6 +175,21 @@ public class ProjectSetExportWizard extends Wizard implements IExportWizard {
monitor.done();
}
+
+ private XMLMemento getXMLMementoRoot() {
+ Document document;
+ try {
+ document = DocumentBuilderFactory.newInstance()
+ .newDocumentBuilder().newDocument();
+ Element element = document.createElement("psf"); //$NON-NLS-1$
+ element.setAttribute("version", "2.0"); //$NON-NLS-1$ //$NON-NLS-2$
+ document.appendChild(element);
+ return new XMLMemento(document, element);
+ } catch (ParserConfigurationException e) {
+ throw new Error(e.getMessage());
+ }
+ }
+
});
} catch (InterruptedException e) {
return true;

Back to the top