Author: snjeza
Date: 2008-11-30 18:18:24 -0500 (Sun, 30 Nov 2008)
New Revision: 12153
Added:
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/dialog/
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/dialog/AbstractFileSetContentProvider.java
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/dialog/EarFileSetProvider.java
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/dialog/FileSetLabelProvider.java
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/dialog/Messages.java
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/dialog/RemovedFileSetProvider.java
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/dialog/SeamFacetVersionChangeDelegate.java
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/dialog/SeamFacetVersionChangeDialog.java
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/dialog/WarFileSetProvider.java
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/dialog/messages.properties
Modified:
trunk/seam/plugins/org.jboss.tools.seam.ui/META-INF/MANIFEST.MF
trunk/seam/plugins/org.jboss.tools.seam.ui/plugin.xml
Log:
JBIDE-3272 Users cannot change projects from Seam 2.0 to Seam 2.1
Modified: trunk/seam/plugins/org.jboss.tools.seam.ui/META-INF/MANIFEST.MF
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.ui/META-INF/MANIFEST.MF 2008-11-30 23:17:57
UTC (rev 12152)
+++ trunk/seam/plugins/org.jboss.tools.seam.ui/META-INF/MANIFEST.MF 2008-11-30 23:18:24
UTC (rev 12153)
@@ -80,3 +80,4 @@
org.jboss.tools.seam.ui.widget.field,
org.jboss.tools.seam.ui.wizard
Bundle-Vendor: Red Hat, Inc.
+Import-Package: com.ibm.icu.text
Modified: trunk/seam/plugins/org.jboss.tools.seam.ui/plugin.xml
===================================================================
--- trunk/seam/plugins/org.jboss.tools.seam.ui/plugin.xml 2008-11-30 23:17:57 UTC (rev
12152)
+++ trunk/seam/plugins/org.jboss.tools.seam.ui/plugin.xml 2008-11-30 23:18:24 UTC (rev
12153)
@@ -639,4 +639,13 @@
<provider
class="org.jboss.tools.seam.ui.views.properties.SeamELAttributeContentProposalProvider"/>
</extension>
+
+ <extension
+ point="org.eclipse.wst.common.project.facet.core.facets">
+ <action facet="jst.seam" type="version-change">
+ <delegate
class="org.jboss.tools.seam.ui.dialog.SeamFacetVersionChangeDelegate"/>
+ </action>
+ </extension>
+
+
</plugin>
Added:
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/dialog/AbstractFileSetContentProvider.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/dialog/AbstractFileSetContentProvider.java
(rev 0)
+++
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/dialog/AbstractFileSetContentProvider.java 2008-11-30
23:18:24 UTC (rev 12153)
@@ -0,0 +1,54 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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.seam.ui.dialog;
+
+import java.io.File;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
+
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+
+import com.ibm.icu.text.Collator;
+
+/**
+ *
+ * @author snjeza
+ */
+public abstract class AbstractFileSetContentProvider implements
+ IStructuredContentProvider {
+
+ protected static File[] ZERO_ARRAY = new File[0];
+ protected Object[] elements = ZERO_ARRAY;
+ private final Comparator comparer = new Comparator() {
+ private Collator collator = Collator.getInstance();
+
+ public int compare(Object arg0, Object arg1) {
+ String s1 = ((File) arg0).getName();
+ String s2 = ((File) arg1).getName();
+ return collator.compare(s1, s2);
+ }
+ };
+ public Object[] getElements(Object inputElement) {
+ return elements;
+ }
+
+ public void dispose() {
+
+ }
+
+ public void sort() {
+ File[] results = new File[elements.length];
+ System.arraycopy(elements, 0, results, 0, elements.length);
+ Collections.sort(Arrays.asList(results), comparer);
+ elements = results;
+ }
+}
Added:
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/dialog/EarFileSetProvider.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/dialog/EarFileSetProvider.java
(rev 0)
+++
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/dialog/EarFileSetProvider.java 2008-11-30
23:18:24 UTC (rev 12153)
@@ -0,0 +1,86 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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.seam.ui.dialog;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+import java.util.TreeSet;
+
+import org.eclipse.jface.viewers.Viewer;
+import org.jboss.tools.seam.core.project.facet.SeamVersion;
+import org.jboss.tools.seam.internal.core.project.facet.Seam2FacetInstallDelegate;
+import
org.jboss.tools.seam.internal.core.project.facet.SeamFacetAbstractInstallDelegate;
+import org.jboss.tools.seam.internal.core.project.facet.SeamFacetInstallDelegate;
+import org.jboss.tools.seam.internal.core.project.facet.AntCopyUtils.FileSet;
+import org.jboss.tools.seam.internal.core.project.facet.AntCopyUtils.FileSetFileFilter;
+
+/**
+ *
+ * @author snjeza
+ */
+public class EarFileSetProvider extends AbstractFileSetContentProvider {
+
+ private SeamVersion version;
+
+ public EarFileSetProvider(SeamVersion version) {
+ super();
+ this.version = version;
+ }
+
+ private FileSet getFileSet() {
+ if (SeamVersion.SEAM_1_2.equals(version)) {
+ return SeamFacetInstallDelegate.JBOSS_EAR_CONTENT;
+ } else {
+ return Seam2FacetInstallDelegate.JBOSS_EAR_CONTENT;
+ }
+ }
+
+ private String getDroolsLibPath() {
+ if (SeamVersion.SEAM_1_2.equals(version)) {
+ return SeamFacetInstallDelegate.DROOLS_LIB_SEAM_RELATED_PATH;
+ } else {
+ return Seam2FacetInstallDelegate.DROOLS_LIB_SEAM_RELATED_PATH;
+ }
+ }
+
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ if (newInput instanceof File) {
+ Set<File> set = new TreeSet<File>();
+ File seamHomePath = (File) newInput;
+ set.addAll(getFiles(seamHomePath));
+ File seamLibFolder = new File(seamHomePath,
+ SeamFacetAbstractInstallDelegate.SEAM_LIB_RELATED_PATH);
+ set.addAll(getFiles(seamLibFolder));
+ File droolsLibFolder = new File(seamHomePath, getDroolsLibPath());
+ set.addAll(getFiles(droolsLibFolder));
+ elements = set.toArray(new File[0]);
+ } else {
+ elements = ZERO_ARRAY;
+ }
+ sort();
+ }
+
+ private List<File> getFiles(File dir) {
+ List<File> list = new ArrayList<File>();
+ if (dir == null || !dir.isDirectory()) {
+ return list;
+ }
+ FileSet set = getFileSet().dir(dir);
+ FileSetFileFilter filter = new FileSetFileFilter(set);
+ File[] files = dir.listFiles(filter);
+ for (int i = 0; i < files.length; i++) {
+ list.add(files[i]);
+ }
+ return list;
+ }
+}
Added:
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/dialog/FileSetLabelProvider.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/dialog/FileSetLabelProvider.java
(rev 0)
+++
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/dialog/FileSetLabelProvider.java 2008-11-30
23:18:24 UTC (rev 12153)
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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.seam.ui.dialog;
+
+import java.io.File;
+
+import org.eclipse.jface.viewers.LabelProvider;
+
+/**
+ *
+ * @author snjeza
+ */
+public class FileSetLabelProvider extends LabelProvider {
+
+ public String getText(Object element) {
+ if (element instanceof File) {
+ return ((File) element).getName();
+ } else {
+ return ""; //$NON-NLS-1$
+ }
+ }
+}
Added:
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/dialog/Messages.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/dialog/Messages.java
(rev 0)
+++
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/dialog/Messages.java 2008-11-30
23:18:24 UTC (rev 12153)
@@ -0,0 +1,26 @@
+package org.jboss.tools.seam.ui.dialog;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages extends NLS {
+ private static final String BUNDLE_NAME =
"org.jboss.tools.seam.ui.dialog.messages"; //$NON-NLS-1$
+ public static String SeamFacetVersionChangeDialog_Add;
+ public static String SeamFacetVersionChangeDialog_Libraries;
+ public static String SeamFacetVersionChangeDialog_Libraries_to_be_added;
+ public static String SeamFacetVersionChangeDialog_Libraries_to_be_removed;
+ public static String SeamFacetVersionChangeDialog_New_Seam_Runtime;
+ public static String SeamFacetVersionChangeDialog_Note;
+ public static String SeamFacetVersionChangeDialog_Note_description;
+ public static String SeamFacetVersionChangeDialog_Old_Seam_Runtime;
+ public static String SeamFacetVersionChangeDialog_Project;
+ public static String SeamFacetVersionChangeDialog_Seam_Runtime_Settings;
+ public static String SeamFacetVersionChangeDialog_Set_Seam_Runtime;
+ public static String SeamFacetVersionChangeDialog_Update_libraries;
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ private Messages() {
+ }
+}
Added:
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/dialog/RemovedFileSetProvider.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/dialog/RemovedFileSetProvider.java
(rev 0)
+++
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/dialog/RemovedFileSetProvider.java 2008-11-30
23:18:24 UTC (rev 12153)
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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.seam.ui.dialog;
+
+import java.io.File;
+import java.io.FileFilter;
+
+import org.eclipse.jface.viewers.Viewer;
+
+/**
+ *
+ * @author snjeza
+ */
+public class RemovedFileSetProvider extends AbstractFileSetContentProvider {
+
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ if (newInput instanceof File) {
+ File dir = (File) newInput;
+ elements = dir.listFiles(new FileFilter() {
+
+ public boolean accept(File pathname) {
+ if (pathname.getName().endsWith(".jar") ||
pathname.getName().endsWith(".zip")) { //$NON-NLS-1$ //$NON-NLS-2$
+ return true;
+ }
+ return false;
+ }
+
+ });
+ } else {
+ elements = ZERO_ARRAY;
+ }
+ sort();
+ }
+
+}
Added:
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/dialog/SeamFacetVersionChangeDelegate.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/dialog/SeamFacetVersionChangeDelegate.java
(rev 0)
+++
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/dialog/SeamFacetVersionChangeDelegate.java 2008-11-30
23:18:24 UTC (rev 12153)
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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.seam.ui.dialog;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.wst.common.project.facet.core.IDelegate;
+import org.eclipse.wst.common.project.facet.core.IFacetedProject;
+import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
+import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
+import org.jboss.tools.seam.core.SeamCorePlugin;
+
+/**
+ * This delegate changes Seam facet version
+ *
+ * @author snjeza
+ */
+public class SeamFacetVersionChangeDelegate implements IDelegate {
+
+ /**
+ * @see
+ * IDelegate.execute(IProject,IProjectFacetVersion,Object,IProgressMonitor
+ * )
+ */
+ public void execute(final IProject project, final IProjectFacetVersion fv,
+ final Object config, final IProgressMonitor monitor) throws CoreException {
+
+ Display.getDefault().syncExec(new Runnable() {
+
+ public void run() {
+ try {
+ Shell shell = PlatformUI.getWorkbench()
+ .getActiveWorkbenchWindow().getShell();
+ //Shell shell = null;
+ IFacetedProject fproj = ProjectFacetsManager
+ .create(project);
+ SeamFacetVersionChangeDialog dialog = new SeamFacetVersionChangeDialog(
+ shell, fproj, fv);
+ dialog.open();
+ } catch (CoreException e) {
+ log(e);
+ } finally {
+ if (monitor != null) {
+ monitor.done();
+ }
+ }
+ }
+
+ });
+ }
+
+ private static void log(Throwable e) {
+ IStatus status = new Status(IStatus.ERROR, SeamCorePlugin.PLUGIN_ID, e
+ .getLocalizedMessage(), e);
+ SeamCorePlugin.getDefault().getLog().log(status);
+ }
+}
Added:
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/dialog/SeamFacetVersionChangeDialog.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/dialog/SeamFacetVersionChangeDialog.java
(rev 0)
+++
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/dialog/SeamFacetVersionChangeDialog.java 2008-11-30
23:18:24 UTC (rev 12153)
@@ -0,0 +1,572 @@
+/*************************************************************************************
+ * Copyright (c) 2008 JBoss, a division of Red Hat 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:
+ * JBoss, a division of Red Hat - Initial implementation.
+ ************************************************************************************/
+package org.jboss.tools.seam.ui.dialog;
+
+import java.io.File;
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspaceRunnable;
+import org.eclipse.core.resources.ProjectScope;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.core.runtime.preferences.IScopeContext;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.TitleAreaDialog;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.viewers.CheckStateChangedEvent;
+import org.eclipse.jface.viewers.CheckboxTableViewer;
+import org.eclipse.jface.viewers.IBaseLabelProvider;
+import org.eclipse.jface.viewers.ICheckStateListener;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.ListViewer;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.dialogs.IOverwriteQuery;
+import org.eclipse.ui.wizards.datatransfer.FileSystemStructureProvider;
+import org.eclipse.ui.wizards.datatransfer.IImportStructureProvider;
+import org.eclipse.ui.wizards.datatransfer.ImportOperation;
+import org.eclipse.wst.common.componentcore.ComponentCore;
+import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
+import org.eclipse.wst.common.componentcore.resources.IVirtualFolder;
+import org.eclipse.wst.common.project.facet.core.IFacetedProject;
+import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
+import org.jboss.tools.seam.core.SeamCorePlugin;
+import org.jboss.tools.seam.core.project.facet.SeamRuntime;
+import org.jboss.tools.seam.core.project.facet.SeamRuntimeManager;
+import org.jboss.tools.seam.core.project.facet.SeamVersion;
+import org.jboss.tools.seam.internal.core.project.facet.ISeamFacetDataModelProperties;
+import
org.jboss.tools.seam.ui.widget.editor.SeamRuntimeListFieldEditor.SeamRuntimeNewWizard;
+import org.jboss.tools.seam.ui.wizard.SeamFormWizard;
+import org.jboss.tools.seam.ui.wizard.SeamWizardUtils;
+
+/**
+ * @author snjeza
+ *
+ */
+public class SeamFacetVersionChangeDialog extends TitleAreaDialog {
+ private IProjectFacetVersion fv;
+ private IEclipsePreferences preferences;
+ private IProject warProject;
+ private Image _dlgTitleImage;
+ private Combo seamRuntimeCombo;
+ private Text seamRuntimeNameText;
+ private CheckboxTableViewer removed;
+ private ListViewer added;
+ private ListViewer addedEar;
+ private CheckboxTableViewer removedEar;
+ private Button updateLibs;
+ private static IOverwriteQuery OVERWRITE_ALL = new IOverwriteQuery() {
+ public String queryOverwrite(String file) {
+ return ALL;
+ }
+ };
+ private static String[] filePattern = { "jboss-seam", "antlr-",
//$NON-NLS-1$ //$NON-NLS-2$
+ "commons-beanutils", "commons-digester", "commons-jci" ,
//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ "commons-collections", //$NON-NLS-1$
+ "core.", "drools-", "ajax4jsf", //$NON-NLS-1$
//$NON-NLS-2$ //$NON-NLS-3$
+ "jboss-el", "jbpm", "jsf-facelets", "jxl.jar",
//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ "mvel", "richfaces" , //$NON-NLS-1$ //$NON-NLS-2$
+ "janino", "el-ri", "stringtemplate",
"oscache-"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+
+ /**
+ * @param parentShell
+ * @param newWizard
+ */
+ public SeamFacetVersionChangeDialog(Shell parentShell,
+ IFacetedProject facetedProject, IProjectFacetVersion fv) {
+ super(parentShell);
+ Assert.isNotNull(facetedProject);
+ setShellStyle(SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL | SWT.MAX
+ | SWT.TITLE | SWT.BORDER | SWT.RESIZE | getDefaultOrientation());
+ this.fv = fv;
+ warProject = SeamWizardUtils.getRootSeamProject(facetedProject
+ .getProject());
+ Assert.isNotNull(warProject);
+ preferences = SeamCorePlugin.getSeamPreferences(warProject);
+ _dlgTitleImage = ImageDescriptor.createFromFile(SeamFormWizard.class,
+ "SeamWebProjectWizBan.png").createImage(); //$NON-NLS-1$
+ setTitleImage(_dlgTitleImage);
+ }
+
+ @Override
+ protected Control createDialogArea(Composite parent) {
+ Font mainFont = parent.getFont();
+ Composite area = (Composite) super.createDialogArea(parent);
+ Composite contents = new Composite(area, SWT.NONE);
+ GridData gd = new GridData(GridData.FILL_BOTH);
+ // gd.heightHint = 300;
+ contents.setLayoutData(gd);
+ contents.setLayout(new GridLayout(3, false));
+ setTitle(Messages.SeamFacetVersionChangeDialog_Seam_Runtime_Settings);
+ setMessage(Messages.SeamFacetVersionChangeDialog_Set_Seam_Runtime);
+ getShell().setText(Messages.SeamFacetVersionChangeDialog_Seam_Runtime_Settings);
+ applyDialogFont(contents);
+ initializeDialogUnits(area);
+
+ Label oldSeamRuntimeLabel = new Label(contents, SWT.NONE);
+ oldSeamRuntimeLabel.setText(Messages.SeamFacetVersionChangeDialog_Old_Seam_Runtime);
+ String seamRuntimeName = ""; //$NON-NLS-1$
+ if (preferences != null) {
+ seamRuntimeName = preferences.get(
+ ISeamFacetDataModelProperties.SEAM_RUNTIME_NAME, ""); //$NON-NLS-1$
+ }
+ seamRuntimeNameText = new Text(contents, SWT.BORDER);
+ seamRuntimeNameText.setText(seamRuntimeName);
+ gd = new GridData(GridData.FILL_HORIZONTAL);
+ gd.horizontalSpan = 2;
+ seamRuntimeNameText.setEnabled(false);
+ seamRuntimeNameText.setLayoutData(gd);
+
+ Label seamRuntimeLabel = new Label(contents, SWT.NONE);
+ seamRuntimeLabel.setText(Messages.SeamFacetVersionChangeDialog_New_Seam_Runtime);
+ seamRuntimeCombo = new Combo(contents, SWT.READ_ONLY);
+ gd = new GridData(GridData.FILL_HORIZONTAL);
+ seamRuntimeCombo.setLayoutData(gd);
+ final SeamVersion version = SeamVersion.findByString(fv
+ .getVersionString());
+ String[] runtimeNames = getRuntimeNames(version);
+ seamRuntimeCombo.setItems(runtimeNames);
+ if (runtimeNames.length > 0) {
+ seamRuntimeCombo.select(0);
+ }
+
+ Button addSeamRuntime = new Button(contents, SWT.PUSH);
+ addSeamRuntime.setText(Messages.SeamFacetVersionChangeDialog_Add);
+ addSeamRuntime.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ List<SeamRuntime> added = new ArrayList<SeamRuntime>();
+ List<SeamVersion> versions = new ArrayList<SeamVersion>();
+ versions.add(version);
+ Wizard wiz = new SeamRuntimeNewWizard(
+ (List<SeamRuntime>) new ArrayList<SeamRuntime>(Arrays
+ .asList(SeamRuntimeManager.getInstance()
+ .getRuntimes())), added, versions);
+ WizardDialog dialog = new WizardDialog(Display.getCurrent()
+ .getActiveShell(), wiz);
+ dialog.open();
+ }
+
+ });
+
+ Group libraryGroup = new Group(contents, SWT.NONE);
+ libraryGroup.setText(Messages.SeamFacetVersionChangeDialog_Libraries);
+ gd = new GridData(GridData.FILL_BOTH);
+ gd.horizontalSpan = 3;
+ libraryGroup.setLayoutData(gd);
+ libraryGroup.setLayout(new GridLayout(2, false));
+ updateLibs = new Button(libraryGroup, SWT.CHECK);
+ gd = new GridData(GridData.FILL_HORIZONTAL);
+ gd.horizontalSpan = 2;
+ updateLibs.setLayoutData(gd);
+ updateLibs.setText(Messages.SeamFacetVersionChangeDialog_Update_libraries);
+ updateLibs.setSelection(false);
+
+ Label warProjectLabel = new Label(libraryGroup,SWT.NONE);
+ warProjectLabel.setText(NLS.bind(Messages.SeamFacetVersionChangeDialog_Project,
warProject.getName()));
+ gd = new GridData(GridData.FILL_HORIZONTAL | GridData.CENTER);
+ gd.horizontalSpan=2;
+ warProjectLabel.setLayoutData(gd);
+ addLabels(libraryGroup);
+
+ removed = CheckboxTableViewer.newCheckList(
+ libraryGroup, SWT.SINGLE | SWT.TOP | SWT.BORDER);
+ gd = new GridData(GridData.FILL_BOTH);
+ gd.heightHint = 150;
+ removed.getTable().setLayoutData(gd);
+ removed.getTable().setFont(mainFont);
+ IBaseLabelProvider labelProvider = new FileSetLabelProvider();
+ removed.setLabelProvider(labelProvider);
+ File webLibFolder = getWebLibFolder();
+
+ IStructuredContentProvider rContentProvider = new RemovedFileSetProvider();
+ removed.setContentProvider(rContentProvider);
+ removed.setInput(webLibFolder);
+ removed.getTable().setEnabled(false);
+
+ removed.addCheckStateListener(new ICheckStateListener() {
+ public void checkStateChanged(CheckStateChangedEvent event) {
+ removed
+ .setSelection(new StructuredSelection(event
+ .getElement()));
+ }
+ });
+
+ check(removed, rContentProvider);
+ added = new ListViewer(libraryGroup, SWT.V_SCROLL
+ | SWT.H_SCROLL | SWT.BORDER);
+ gd = new GridData(GridData.FILL_BOTH);
+ gd.heightHint = 150;
+ added.getList().setLayoutData(gd);
+ added.getList().setFont(mainFont);
+ added.setLabelProvider(labelProvider);
+ SeamVersion newVersion = SeamRuntimeManager.getInstance()
+ .findRuntimeByName(seamRuntimeCombo.getText()).getVersion();
+ IStructuredContentProvider aContentProvider = new WarFileSetProvider(
+ isWarConfiguration(), newVersion);
+ added.setContentProvider(aContentProvider);
+
+ added.getList().setEnabled(false);
+
+ File earContentsFolder = getEarContentsFolder();
+ if (earContentsFolder != null && earContentsFolder.isDirectory()) {
+ Label earProjectLabel = new Label(libraryGroup,SWT.NONE);
+ String earProjectName =
preferences.get(ISeamFacetDataModelProperties.SEAM_EAR_PROJECT, "");
//$NON-NLS-1$
+ earProjectLabel.setText(NLS.bind(Messages.SeamFacetVersionChangeDialog_Project,
earProjectName));
+ gd = new GridData(GridData.FILL_HORIZONTAL | GridData.CENTER);
+ gd.horizontalSpan=2;
+ earProjectLabel.setLayoutData(gd);
+ addLabels(libraryGroup);
+ removedEar = CheckboxTableViewer
+ .newCheckList(libraryGroup, SWT.SINGLE | SWT.TOP
+ | SWT.BORDER);
+ gd = new GridData(GridData.FILL_BOTH);
+ gd.heightHint = 150;
+ removedEar.getTable().setLayoutData(gd);
+ removedEar.getTable().setFont(mainFont);
+ removedEar.setLabelProvider(labelProvider);
+
+ IStructuredContentProvider rEarContentProvider = new RemovedFileSetProvider();
+ removedEar.setContentProvider(rEarContentProvider);
+ removedEar.setInput(earContentsFolder);
+ removedEar.getTable().setEnabled(false);
+
+ removedEar.addCheckStateListener(new ICheckStateListener() {
+ public void checkStateChanged(CheckStateChangedEvent event) {
+ removedEar.setSelection(new StructuredSelection(event
+ .getElement()));
+ }
+ });
+
+ check(removedEar, rEarContentProvider);
+ addedEar = new ListViewer(libraryGroup,
+ SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER);
+ gd = new GridData(GridData.FILL_BOTH);
+ gd.heightHint = 150;
+ addedEar.getList().setLayoutData(gd);
+ addedEar.getList().setFont(mainFont);
+ addedEar.setLabelProvider(labelProvider);
+ IStructuredContentProvider aEarContentProvider = new EarFileSetProvider(
+ newVersion);
+ addedEar.setContentProvider(aEarContentProvider);
+
+ addedEar.getList().setEnabled(false);
+
+ }
+ updateLibs.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ added.getList().setEnabled(updateLibs.getSelection());
+ removed.getTable().setEnabled(updateLibs.getSelection());
+ if (addedEar != null) {
+ removedEar.getTable().setEnabled(updateLibs.getSelection());
+ addedEar.getList().setEnabled(updateLibs.getSelection());
+ }
+ }
+
+ });
+ Group noteGroup = new Group(contents, SWT.NONE);
+ noteGroup.setText(Messages.SeamFacetVersionChangeDialog_Note);
+ noteGroup.setLayout(new GridLayout(2,false));
+ gd = new GridData(GridData.FILL_BOTH);
+ gd.horizontalSpan=3;
+ noteGroup.setLayoutData(gd);
+
+ Label noteImage = new Label(noteGroup,SWT.NONE);
+ Image image =
PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJS_WARN_TSK);
+ noteImage.setImage(image);
+ Label noteLabel = new Label(noteGroup,SWT.NONE);
+ noteLabel.setText(Messages.SeamFacetVersionChangeDialog_Note_description);
+
+ seamRuntimeCombo.addSelectionListener(new SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ refresh();
+ }
+
+ });
+ refresh();
+ return area;
+ }
+
+ private void refresh() {
+ updateButton();
+ File seamHomePath = getSeamHomePath();
+ added.setInput(seamHomePath);
+ if (addedEar != null) {
+ addedEar.setInput(seamHomePath);
+ }
+ }
+
+ private void updateButton() {
+ Button okButton = getButton(IDialogConstants.OK_ID);
+ if (okButton != null) {
+ boolean ok = seamRuntimeCombo.getText().trim().length() > 0;
+ okButton.setEnabled(ok);
+ }
+ }
+
+ private void addLabels(Composite composite) {
+ Label removedLibs = new Label(composite, SWT.NONE);
+ GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+ removedLibs.setLayoutData(gd);
+ removedLibs.setText(Messages.SeamFacetVersionChangeDialog_Libraries_to_be_removed);
+
+ Label addedLibs = new Label(composite, SWT.NONE);
+ addedLibs.setText(Messages.SeamFacetVersionChangeDialog_Libraries_to_be_added);
+ gd = new GridData(GridData.FILL_HORIZONTAL);
+ addedLibs.setLayoutData(gd);
+ }
+ private File getEarContentsFolder() {
+ IContainer earContentsFolder = getEarContentsEclipseFolder();
+ if (earContentsFolder == null) {
+ return null;
+ } else {
+ return earContentsFolder.getLocation().toFile();
+ }
+ }
+
+ private IContainer getEarContentsEclipseFolder() {
+ String earProjectName = preferences.get(ISeamFacetDataModelProperties.SEAM_EAR_PROJECT,
""); //$NON-NLS-1$
+ if (earProjectName != null && earProjectName.trim().length() > 0) {
+ IProject earProject =
ResourcesPlugin.getWorkspace().getRoot().getProject(earProjectName);
+ if (earProject != null && earProject.isOpen()) {
+ IVirtualComponent component = ComponentCore.createComponent(earProject);
+ IVirtualFolder rootVirtFolder = component.getRootFolder().getFolder(new
Path("/")); //$NON-NLS-1$
+ return rootVirtFolder.getUnderlyingFolder();
+ }
+ }
+ return null;
+
+ }
+
+ private void check(final CheckboxTableViewer removed,
+ IStructuredContentProvider rContentProvider) {
+ Object[] elements = rContentProvider.getElements(null);
+ for (int i = 0; i < elements.length; i++) {
+ if (elements[i] instanceof File) {
+ File file = (File) elements[i];
+ removed.setChecked(elements[i], getChecked(file));
+
+ }
+ }
+ }
+
+ private boolean getChecked(File file) {
+ for (int i = 0; i < filePattern.length; i++) {
+ if (file.getName().startsWith(filePattern[i])) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private File getSeamHomePath() {
+ String selectedSeamName = seamRuntimeCombo.getText();
+ if (selectedSeamName != null && selectedSeamName.trim().length() > 0) {
+ SeamRuntime selectedSeamRuntime = SeamRuntimeManager.getInstance()
+ .findRuntimeByName(selectedSeamName);
+ if (selectedSeamRuntime != null) {
+ return new File(selectedSeamRuntime.getHomeDir());
+ }
+ }
+ return null;
+ }
+
+ private File getWebLibFolder() {
+ IContainer webLibFolder = getWebLibEclipseFolder();
+
+ return webLibFolder.getLocation().toFile();
+
+ }
+
+ private IContainer getWebLibEclipseFolder() {
+ IVirtualComponent component = ComponentCore
+ .createComponent(warProject);
+ IVirtualFolder libFolder = component.getRootFolder().getFolder(
+ new Path("/WEB-INF/lib")); //$NON-NLS-1$
+ IContainer webLibFolder = libFolder.getUnderlyingFolder();
+ return webLibFolder;
+ }
+
+ private String[] getRuntimeNames(SeamVersion seamVersion) {
+ SeamRuntime[] rts = SeamRuntimeManager.getInstance().getRuntimes(
+ seamVersion);
+ String[] names = new String[rts.length];
+ for (int i = 0; i < names.length; i++) {
+ names[i] = rts[i].getName();
+ }
+ return names;
+ }
+
+ @Override
+ public boolean close() {
+ if (_dlgTitleImage != null) {
+ _dlgTitleImage.dispose();
+ }
+ return super.close();
+ }
+
+ private boolean isWarConfiguration() {
+ if (preferences == null) {
+ return false;
+ }
+ return preferences.get(
+ ISeamFacetDataModelProperties.JBOSS_AS_DEPLOY_AS,
+ ISeamFacetDataModelProperties.DEPLOY_AS_WAR).equals(
+ ISeamFacetDataModelProperties.DEPLOY_AS_WAR);
+ }
+
+ @Override
+ protected void createButtonsForButtonBar(Composite parent) {
+ super.createButtonsForButtonBar(parent);
+ updateButton();
+ }
+
+ @Override
+ protected void okPressed() {
+
+ try {
+ ResourcesPlugin.getWorkspace().run(new IWorkspaceRunnable() {
+
+ public void run(IProgressMonitor monitor) throws CoreException {
+ setSeamSettings();
+ updateLibraries();
+ }
+
+ }, new NullProgressMonitor());
+
+ } catch (CoreException e) {
+ SeamCorePlugin.getPluginLog().logError(e);
+ }
+ super.okPressed();
+ }
+
+ protected void setSeamSettings() {
+ IEclipsePreferences prefs = preferences;
+ if(prefs==null) {
+ IScopeContext projectScope = new ProjectScope(warProject);
+ prefs = projectScope.getNode(SeamCorePlugin.PLUGIN_ID);
+ }
+ prefs.put(ISeamFacetDataModelProperties.SEAM_SETTINGS_VERSION,
+ ISeamFacetDataModelProperties.SEAM_SETTINGS_VERSION_1_1);
+ prefs.put(ISeamFacetDataModelProperties.SEAM_RUNTIME_NAME,
+ seamRuntimeCombo.getText());
+
+ }
+
+ private void updateLibraries() throws CoreException {
+ if (updateLibs.getSelection()) {
+ IContainer webLibContainer = getWebLibEclipseFolder();
+ processProject(webLibContainer,removed,added);
+ if (removedEar != null) {
+ IContainer earContentsFolder = getEarContentsEclipseFolder();
+ processProject(earContentsFolder, removedEar, addedEar);
+ }
+ }
+ }
+
+ private void processProject(IContainer container,
+ CheckboxTableViewer cbtViewer, ListViewer listViewer)
+ throws CoreException {
+ if (container != null) {
+ removeFiles(container, cbtViewer.getCheckedElements());
+ IStructuredContentProvider structuredProvider = (IStructuredContentProvider)
listViewer
+ .getContentProvider();
+ Object[] addedElements = structuredProvider.getElements(null);
+ Map<File, List<File>> parentMaps = getImportMaps(addedElements);
+ IPath containerPath = container.getFullPath();
+ IImportStructureProvider provider = FileSystemStructureProvider.INSTANCE;
+ for (File parent : parentMaps.keySet()) {
+ try {
+ ImportOperation op = new ImportOperation(containerPath,
+ parent, provider, OVERWRITE_ALL, parentMaps
+ .get(parent));
+ op.setCreateContainerStructure(false);
+ op.run(new NullProgressMonitor());
+ } catch (InvocationTargetException e) {
+ SeamCorePlugin.getPluginLog().logError(e);
+ } catch (InterruptedException e) {
+ SeamCorePlugin.getPluginLog().logError(e);
+ }
+ }
+ }
+ }
+
+ private void removeFiles(IContainer container, Object[] elements) throws CoreException
{
+ for (int i = 0; i < elements.length; i++) {
+ if (elements[i] instanceof File) {
+ File file = (File) elements[i];
+ String name = file.getName();
+ IResource resource = container.findMember(name);
+ resource.delete(true, null);
+ }
+ }
+ }
+
+ private Map<File, List<File>> getImportMaps(Object[] elements) {
+ Map<File, List<File>> parentMaps = new HashMap<File,
List<File>>();
+ for (int i = 0; i < elements.length; i++) {
+ if (elements[i] instanceof File) {
+ File file = (File) elements[i];
+ File parent = file.getParentFile();
+ Set<File> parents = parentMaps.keySet();
+ if (parents.contains(parent)) {
+ List<File> files = parentMaps.get(parent);
+ files.add(file);
+ } else {
+ List<File> files = new ArrayList<File>();
+ files.add(file);
+ parentMaps.put(parent, files);
+ }
+ }
+ }
+ return parentMaps;
+ }
+}
Added:
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/dialog/WarFileSetProvider.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/dialog/WarFileSetProvider.java
(rev 0)
+++
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/dialog/WarFileSetProvider.java 2008-11-30
23:18:24 UTC (rev 12153)
@@ -0,0 +1,95 @@
+/*******************************************************************************
+ * Copyright (c) 2007 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.seam.ui.dialog;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+import java.util.TreeSet;
+
+import org.eclipse.jface.viewers.Viewer;
+import org.jboss.tools.seam.core.project.facet.SeamVersion;
+import org.jboss.tools.seam.internal.core.project.facet.Seam2FacetInstallDelegate;
+import
org.jboss.tools.seam.internal.core.project.facet.SeamFacetAbstractInstallDelegate;
+import org.jboss.tools.seam.internal.core.project.facet.SeamFacetInstallDelegate;
+import org.jboss.tools.seam.internal.core.project.facet.AntCopyUtils.FileSet;
+import org.jboss.tools.seam.internal.core.project.facet.AntCopyUtils.FileSetFileFilter;
+
+/**
+ *
+ * @author snjeza
+ */
+public class WarFileSetProvider extends AbstractFileSetContentProvider {
+
+ private boolean isWarConfiguration;
+ private SeamVersion version;
+
+ public WarFileSetProvider(boolean isWarConfiguration, SeamVersion version) {
+ super();
+ this.isWarConfiguration = isWarConfiguration;
+ this.version = version;
+ }
+
+ private FileSet getFileSet() {
+ if (isWarConfiguration) {
+ if (SeamVersion.SEAM_1_2.equals(version)) {
+ return SeamFacetInstallDelegate.JBOSS_WAR_LIB_FILESET_WAR_CONFIG;
+ } else {
+ return Seam2FacetInstallDelegate.JBOSS_WAR_LIB_FILESET_WAR_CONFIG;
+ }
+ } else {
+ if (SeamVersion.SEAM_1_2.equals(version)) {
+ return SeamFacetInstallDelegate.JBOSS_WAR_LIB_FILESET_EAR_CONFIG;
+ } else {
+ return Seam2FacetInstallDelegate.JBOSS_WAR_LIB_FILESET_EAR_CONFIG;
+ }
+ }
+ }
+
+ private String getDroolsLibPath() {
+ if (SeamVersion.SEAM_1_2.equals(version)) {
+ return SeamFacetInstallDelegate.DROOLS_LIB_SEAM_RELATED_PATH;
+ } else {
+ return Seam2FacetInstallDelegate.DROOLS_LIB_SEAM_RELATED_PATH;
+ }
+ }
+
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ if (newInput instanceof File) {
+ Set<File> set = new TreeSet<File>();
+ File seamHomePath = (File) newInput;
+ set.addAll(getFiles(seamHomePath));
+ File seamLibFolder = new File(seamHomePath,
SeamFacetAbstractInstallDelegate.SEAM_LIB_RELATED_PATH);
+ set.addAll(getFiles(seamLibFolder));
+ File droolsLibFolder = new File(seamHomePath, getDroolsLibPath());
+ set.addAll(getFiles(droolsLibFolder));
+ elements = set.toArray(new File[0]);
+ } else {
+ elements = ZERO_ARRAY;
+ }
+ sort();
+ }
+
+ private List<File> getFiles(File dir) {
+ List<File> list = new ArrayList<File>();
+ if (dir == null || !dir.isDirectory()) {
+ return list;
+ }
+ FileSet set = getFileSet().dir(dir);
+ FileSetFileFilter filter = new FileSetFileFilter(set);
+ File[] files = dir.listFiles(filter);
+ for (int i = 0; i < files.length; i++) {
+ list.add(files[i]);
+ }
+ return list;
+ }
+}
Added:
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/dialog/messages.properties
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/dialog/messages.properties
(rev 0)
+++
trunk/seam/plugins/org.jboss.tools.seam.ui/src/org/jboss/tools/seam/ui/dialog/messages.properties 2008-11-30
23:18:24 UTC (rev 12153)
@@ -0,0 +1,12 @@
+SeamFacetVersionChangeDialog_Add=Add...
+SeamFacetVersionChangeDialog_Libraries=Libraries
+SeamFacetVersionChangeDialog_Libraries_to_be_added=Libraries to be added:
+SeamFacetVersionChangeDialog_Libraries_to_be_removed=Libraries to be removed:
+SeamFacetVersionChangeDialog_New_Seam_Runtime=New Seam Runtime:
+SeamFacetVersionChangeDialog_Note=Note
+SeamFacetVersionChangeDialog_Note_description=Seam config files and their XSDs won't
be changed.
+SeamFacetVersionChangeDialog_Old_Seam_Runtime=Old Seam Runtime:
+SeamFacetVersionChangeDialog_Project=Project\: {0}
+SeamFacetVersionChangeDialog_Seam_Runtime_Settings=Seam Runtime Settings
+SeamFacetVersionChangeDialog_Set_Seam_Runtime=Set Seam Runtime
+SeamFacetVersionChangeDialog_Update_libraries=Update libraries