Author: rob.stryker(a)jboss.com
Date: 2008-10-30 22:09:33 -0400 (Thu, 30 Oct 2008)
New Revision: 11379
Added:
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.archives.webtools/src/org/jboss/ide/eclipse/archives/webtools/ui/Fileset.java
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.archives.webtools/src/org/jboss/ide/eclipse/archives/webtools/ui/FilesetActionProvider.java
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.archives.webtools/src/org/jboss/ide/eclipse/archives/webtools/ui/FilesetContentProvider.java
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.archives.webtools/src/org/jboss/ide/eclipse/archives/webtools/ui/FilesetDialog.java
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.archives.webtools/src/org/jboss/ide/eclipse/archives/webtools/ui/FilesetLabelProvider.java
Modified:
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.archives.webtools/META-INF/MANIFEST.MF
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.archives.webtools/plugin.xml
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.archives.webtools/src/org/jboss/ide/eclipse/archives/webtools/ui/FilesetViewProvider.java
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/actions/ServerActionMessages.java
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/extensions/EventLogContentProvider.java
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/tools/as/wst/server/ui/ServerContentProvider.java
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.as.ui/plugin.xml
Log:
Removing old server view in favor of new one
Modified:
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.archives.webtools/META-INF/MANIFEST.MF
===================================================================
---
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.archives.webtools/META-INF/MANIFEST.MF 2008-10-30
22:32:17 UTC (rev 11378)
+++
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.archives.webtools/META-INF/MANIFEST.MF 2008-10-31
02:09:33 UTC (rev 11379)
@@ -18,7 +18,8 @@
org.jboss.ide.eclipse.as.core;bundle-version="1.0.0",
org.eclipse.ui.ide;bundle-version="3.4.0",
org.jboss.ide.eclipse.as.ui;bundle-version="1.0.0",
- org.eclipse.core.filesystem;bundle-version="1.2.0"
+ org.eclipse.core.filesystem;bundle-version="1.2.0",
+ org.eclipse.ui.navigator;bundle-version="3.3.100"
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Export-Package: org.jboss.ide.eclipse.archives.webtools,
Modified:
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.archives.webtools/plugin.xml
===================================================================
---
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.archives.webtools/plugin.xml 2008-10-30
22:32:17 UTC (rev 11378)
+++
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.archives.webtools/plugin.xml 2008-10-31
02:09:33 UTC (rev 11379)
@@ -91,13 +91,57 @@
priority="5">
</publisher>
</extension>
- <extension
- point="org.jboss.ide.eclipse.as.ui.ServerViewExtension">
- <ViewProvider
- description="A front end to open, edit, or view files in your
server's directories."
- icon="icons/multiple_files.gif"
- id="org.jboss.ide.eclipse.as.ui.FilesetViewProvider"
- name="File Filters"
-
providerClass="org.jboss.ide.eclipse.archives.webtools.ui.FilesetViewProvider"/>
- </extension>
+
+
+
+ <extension
+ point="org.eclipse.ui.navigator.navigatorContent">
+ <navigatorContent
+ id="org.jboss.ide.eclipse.archives.webtools.ui.extensions.filesets"
+ activeByDefault="true"
+ icon="icons/multiple_files.gif"
+
contentProvider="org.jboss.ide.eclipse.archives.webtools.ui.FilesetContentProvider"
+
labelProvider="org.jboss.ide.eclipse.archives.webtools.ui.FilesetLabelProvider"
+ name="Filesets"
+ priority="normal">
+ <triggerPoints>
+ <instanceof
+ value="org.eclipse.wst.server.core.IServer">
+ </instanceof>
+ </triggerPoints>
+ <possibleChildren>
+ <or>
+ <instanceof
+
value="org.jboss.ide.eclipse.archives.webtools.ui.FilesetContentProvider$ServerWrapper">
+ </instanceof>
+ <instanceof
+
value="org.jboss.ide.eclipse.archives.webtools.ui.Fileset">
+ </instanceof>
+ <instanceof
+
value="org.jboss.ide.eclipse.archives.webtools.ui.FilesetContentProvider$FolderWrapper">
+ </instanceof>
+ <instanceof
+
value="org.jboss.ide.eclipse.archives.webtools.ui.FilesetContentProvider$PathWrapper">
+ </instanceof>
+ </or></possibleChildren>
+ <actionProvider
+
class="org.jboss.ide.eclipse.archives.webtools.ui.FilesetActionProvider"
+
id="rg.jboss.ide.eclipse.archives.webtools.ui.extensions.filesets.actions"
+ priority="highest">
+ </actionProvider>
+ </navigatorContent>
+ </extension>
+ <extension
+ point="org.eclipse.ui.navigator.viewer">
+ <viewerContentBinding
+ viewerId="org.jboss.tools.as.wst.server.ui.ServersView">
+ <includes>
+ <contentExtension
+ isRoot="false"
+
pattern="org.jboss.ide.eclipse.archives.webtools.ui.extensions.filesets">
+ </contentExtension>
+ </includes>
+ </viewerContentBinding>
+ </extension>
+
</plugin>
Added:
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.archives.webtools/src/org/jboss/ide/eclipse/archives/webtools/ui/Fileset.java
===================================================================
---
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.archives.webtools/src/org/jboss/ide/eclipse/archives/webtools/ui/Fileset.java
(rev 0)
+++
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.archives.webtools/src/org/jboss/ide/eclipse/archives/webtools/ui/Fileset.java 2008-10-31
02:09:33 UTC (rev 11379)
@@ -0,0 +1,99 @@
+package org.jboss.ide.eclipse.archives.webtools.ui;
+
+
+public class Fileset implements Cloneable {
+ private static final String HASH_SEPARATOR = "::_::"; //$NON-NLS-1$
+ private String name, folder, includesPattern, excludesPattern;
+ public Fileset() {
+ }
+ public Fileset(String string) {
+ try {
+ name = folder = includesPattern =excludesPattern = ""; //$NON-NLS-1$
+ String[] parts = string.split("\n"); //$NON-NLS-1$
+ name = parts[0];
+ folder = parts[1];
+ includesPattern = parts[2];
+ excludesPattern = parts[3];
+ } catch( ArrayIndexOutOfBoundsException aioobe) {}
+ }
+
+ public Fileset(String name, String folder, String inc, String exc) {
+ this.name = name;
+ this.folder = folder;
+ includesPattern = inc;
+ excludesPattern = exc;
+ }
+ public String toString() {
+ return name + "\n" + folder + "\n" + includesPattern +
"\n" + excludesPattern; //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
+ }
+ /**
+ * @return the folder
+ */
+ public String getFolder() {
+ return folder == null ? "" : folder; //$NON-NLS-1$
+ }
+ /**
+ * @return the name
+ */
+ public String getName() {
+ return name == null ? "" : name; //$NON-NLS-1$
+ }
+ /**
+ * @return the excludesPattern
+ */
+ public String getExcludesPattern() {
+ return excludesPattern == null ? "" : excludesPattern; //$NON-NLS-1$
+ }
+ /**
+ * @return the includesPattern
+ */
+ public String getIncludesPattern() {
+ return includesPattern == null ? "" : includesPattern; //$NON-NLS-1$
+ }
+
+ /**
+ * @param excludesPattern the excludesPattern to set
+ */
+ public void setExcludesPattern(String excludesPattern) {
+ this.excludesPattern = excludesPattern;
+ }
+
+ /**
+ * @param folder the folder to set
+ */
+ public void setFolder(String folder) {
+ this.folder = folder;
+ }
+
+ /**
+ * @param includesPattern the includesPattern to set
+ */
+ public void setIncludesPattern(String includesPattern) {
+ this.includesPattern = includesPattern;
+ }
+
+ /**
+ * @param name the name to set
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Object clone() {
+ try {
+ return super.clone();
+ } catch( Exception e ) {}
+ return null;
+ }
+
+ public boolean equals(Object other) {
+ if( !(other instanceof Fileset)) return false;
+ if( other == this ) return true;
+ Fileset o = (Fileset)other;
+ return o.getName().equals(getName()) && o.getFolder().equals(getFolder())
+ && o.getIncludesPattern().equals(getIncludesPattern()) &&
o.getExcludesPattern().equals(getExcludesPattern());
+ }
+ public int hashCode() {
+ return (name + HASH_SEPARATOR + folder + HASH_SEPARATOR + includesPattern +
HASH_SEPARATOR + excludesPattern + HASH_SEPARATOR).hashCode();
+ }
+}
\ No newline at end of file
Added:
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.archives.webtools/src/org/jboss/ide/eclipse/archives/webtools/ui/FilesetActionProvider.java
===================================================================
---
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.archives.webtools/src/org/jboss/ide/eclipse/archives/webtools/ui/FilesetActionProvider.java
(rev 0)
+++
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.archives.webtools/src/org/jboss/ide/eclipse/archives/webtools/ui/FilesetActionProvider.java 2008-10-31
02:09:33 UTC (rev 11379)
@@ -0,0 +1,270 @@
+package org.jboss.ide.eclipse.archives.webtools.ui;
+
+import java.io.File;
+import java.util.ArrayList;
+
+import org.eclipse.core.filesystem.EFS;
+import org.eclipse.core.filesystem.IFileStore;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.viewers.ITreeSelection;
+import org.eclipse.jface.viewers.TreePath;
+import org.eclipse.jface.window.Window;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.MessageBox;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IEditorDescriptor;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.ide.FileStoreEditorInput;
+import org.eclipse.ui.navigator.CommonActionProvider;
+import org.eclipse.ui.navigator.ICommonActionExtensionSite;
+import org.eclipse.ui.navigator.ICommonViewerSite;
+import org.eclipse.ui.navigator.ICommonViewerWorkbenchSite;
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.wst.server.core.IServer;
+import org.jboss.ide.eclipse.archives.webtools.Messages;
+import org.jboss.ide.eclipse.archives.webtools.ui.FilesetContentProvider.PathWrapper;
+import org.jboss.ide.eclipse.archives.webtools.ui.FilesetContentProvider.ServerWrapper;
+import org.jboss.ide.eclipse.as.core.server.IDeployableServer;
+import org.jboss.ide.eclipse.as.core.util.FileUtil;
+import org.jboss.ide.eclipse.as.ui.JBossServerUIPlugin;
+
+public class FilesetActionProvider extends CommonActionProvider {
+ private ICommonActionExtensionSite actionSite;
+ private Action createFilter, deleteFilter, editFilter,
+ deleteFileAction, editFileAction;
+ private ITreeSelection treeSelection;
+ private Object[] selected;
+
+ public FilesetActionProvider() {
+ super();
+ }
+
+ public void init(ICommonActionExtensionSite aSite) {
+ super.init(aSite);
+ this.actionSite = aSite;
+ createActions();
+ }
+
+ public void fillContextMenu(IMenuManager menu) {
+ ICommonViewerSite site = actionSite.getViewSite();
+ if (site instanceof ICommonViewerWorkbenchSite) {
+ ICommonViewerWorkbenchSite wsSite = (ICommonViewerWorkbenchSite) site;
+ ITreeSelection selection = (ITreeSelection) wsSite.getSelectionProvider()
+ .getSelection();
+ this.treeSelection = selection;
+ selected = selection.toArray();
+ if( selected[0] instanceof ServerWrapper ) {
+ menu.add(createFilter);
+ }else if( selected.length == 1 && selected[0] instanceof Fileset ) {
+ menu.add(deleteFilter);
+ menu.add(editFilter);
+ } else if( allPathWrappers(selected) ) {
+ editFileAction.setEnabled(canEdit(selected));
+ deleteFileAction.setEnabled(canDelete(selected));
+ menu.add(editFileAction);
+ menu.add(deleteFileAction);
+ }
+ }
+ }
+
+ protected boolean allPathWrappers(Object[] list) {
+ boolean result = true;
+ for( int i = 0; i < list.length; i++ )
+ result &= list[i] instanceof PathWrapper;
+ return result;
+ }
+
+ protected boolean canDelete(Object[] list ) {
+ boolean result = true;
+ for( int i = 0; i < list.length; i++ )
+ result &= ((PathWrapper)list[i]).getPath().toFile().exists();
+ return result;
+ }
+
+ protected boolean canEdit(Object[] list) {
+ for( int i = 0; i < list.length; i++ )
+ if( canEdit(((PathWrapper)list[i]).getPath().toFile()))
+ return true;
+ return false;
+ }
+
+ protected boolean canEdit(File file) {
+ IFile eclipseFile = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(new
Path(file.getAbsolutePath()));
+ IFileStore fileStore= EFS.getLocalFileSystem().fromLocalFile(file);
+ boolean editable = false;
+ if( eclipseFile != null ) {
+ IEditorInput input = new FileEditorInput(eclipseFile);
+ IEditorDescriptor desc = PlatformUI.getWorkbench().
+ getEditorRegistry().getDefaultEditor(file.getName());
+ if( input != null && desc != null )
+ editable = true;
+ } else if( fileStore != null ){
+ IEditorInput input = new FileStoreEditorInput(fileStore);
+ IEditorDescriptor desc = PlatformUI.getWorkbench().
+ getEditorRegistry().getDefaultEditor(file.getName());
+ if( input != null && desc != null )
+ editable = true;
+ }
+ return editable;
+ }
+
+ protected File[] getSelectedFiles() {
+ ArrayList<File> tmp = new ArrayList<File>();
+ for( int i = 0; i < selected.length; i++ ) {
+ if( selected[i] instanceof PathWrapper)
+ tmp.add(((PathWrapper)selected[i]).getPath().toFile());
+ }
+ return (File[]) tmp.toArray(new File[tmp.size()]);
+ }
+
+ protected ServerWrapper getServerWrapper(Fileset fs) {
+ TreePath[] paths = treeSelection.getPathsFor(fs);
+ if( paths.length == 1 ) {
+ int count = paths[0].getSegmentCount();
+ if( count > 1 ) {
+ Object wrapper = paths[0].getSegment(count-2);
+ if( wrapper != null && wrapper instanceof ServerWrapper ) {
+ return ((ServerWrapper)wrapper);
+ }
+ }
+ }
+ return null;
+ }
+
+ protected void createActions() {
+ createFilter = new Action() {
+ public void run() {
+ IServer iserver = null;
+ ServerWrapper wrapper;
+ if( !(selected[0] instanceof ServerWrapper))
+ return;
+
+ wrapper = (ServerWrapper)selected[0];
+ iserver = wrapper.server;
+
+ IDeployableServer server = (IDeployableServer) iserver
+ .loadAdapter(IDeployableServer.class,
+ new NullProgressMonitor());
+ String location = null;
+ if (server != null)
+ location = server.getConfigDirectory();
+ else
+ location = iserver.getRuntime().getLocation().toOSString();
+
+ if (location != null) {
+ FilesetDialog d = new FilesetDialog(new Shell(), location);
+ if (d.open() == Window.OK) {
+ Fileset fs = d.getFileset();
+ wrapper.addFileset(fs);
+ }
+ }
+ }
+ };
+ createFilter.setText(Messages.FilesetsCreateFilter);
+
+ deleteFilter = new Action() {
+ public void run() {
+ Fileset fs = (Fileset)selected[0];
+ ServerWrapper wrapper = getServerWrapper(fs);
+ if( wrapper != null )
+ wrapper.removeFileset(fs);
+ }
+ };
+ deleteFilter.setText(Messages.FilesetsDeleteFilter);
+
+ editFilter = new Action() {
+ public void run() {
+ Fileset sel = (Fileset)selected[0];
+ ServerWrapper wrapper = getServerWrapper(sel);
+ FilesetDialog d = new FilesetDialog(new Shell(), sel);
+ if (d.open() == Window.OK) {
+ Fileset ret = d.getFileset();
+ sel.setName(ret.getName());
+ sel.setFolder(ret.getFolder());
+ sel.setIncludesPattern(ret.getIncludesPattern());
+ sel.setExcludesPattern(ret.getExcludesPattern());
+ wrapper.saveFilesets();
+ }
+ }
+ };
+ editFilter.setText(Messages.FilesetsEditFilter);
+
+ deleteFileAction = new Action() {
+ public void run() {
+ try {
+ Shell shell = Display.getCurrent().getActiveShell();
+ File[] files = getSelectedFiles();
+ MessageBox mb = new MessageBox(shell, SWT.ICON_QUESTION
+ | SWT.OK | SWT.CANCEL);
+ mb.setText(Messages.DeleteFiles);
+ mb.setMessage(Messages.DeleteFilesMessage);
+ if (mb.open() == SWT.OK) {
+ for (int i = 0; i < files.length; i++)
+ FileUtil.safeDelete(files[i]);
+ refreshViewer();
+ }
+ } catch (Exception e) {
+ }
+ }
+ };
+ deleteFileAction.setText(Messages.FilesetsDeleteFile);
+
+ editFileAction = new Action() {
+ public void run() {
+ File[] files = getSelectedFiles();
+ IWorkbench wb = PlatformUI.getWorkbench();
+ IWorkbenchWindow win = wb.getActiveWorkbenchWindow();
+ IWorkbenchPage page = win.getActivePage();
+ for (int i = 0; i < files.length; i++) {
+ try {
+ IFile eclipseFile = ResourcesPlugin.getWorkspace()
+ .getRoot().getFileForLocation(
+ new Path(files[i].getAbsolutePath()));
+ IFileStore fileStore = EFS.getLocalFileSystem()
+ .fromLocalFile(files[i]);
+ if (eclipseFile != null) {
+ IEditorInput input = new FileEditorInput(
+ eclipseFile);
+ IEditorDescriptor desc = PlatformUI.getWorkbench()
+ .getEditorRegistry().getDefaultEditor(
+ files[i].getName());
+ if (desc != null)
+ page.openEditor(input, desc.getId());
+ } else if (fileStore != null) {
+ IEditorInput input = new FileStoreEditorInput(
+ fileStore);
+ IEditorDescriptor desc = PlatformUI.getWorkbench()
+ .getEditorRegistry().getDefaultEditor(
+ files[i].getName());
+ if (desc != null)
+ page.openEditor(input, desc.getId());
+ }
+ } catch (Exception e) {
+ IStatus status = new Status(IStatus.ERROR,
+ JBossServerUIPlugin.PLUGIN_ID,
+ Messages.FilesetsCannotOpenFile, e);
+ JBossServerUIPlugin.getDefault().getLog().log(status);
+ }
+ }
+ }
+ };
+ editFileAction.setText(Messages.FilesetsEditFile);
+ }
+
+ protected void refreshViewer() {
+ actionSite.getStructuredViewer().refresh();
+ }
+
+}
\ No newline at end of file
Added:
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.archives.webtools/src/org/jboss/ide/eclipse/archives/webtools/ui/FilesetContentProvider.java
===================================================================
---
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.archives.webtools/src/org/jboss/ide/eclipse/archives/webtools/ui/FilesetContentProvider.java
(rev 0)
+++
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.archives.webtools/src/org/jboss/ide/eclipse/archives/webtools/ui/FilesetContentProvider.java 2008-10-31
02:09:33 UTC (rev 11379)
@@ -0,0 +1,245 @@
+package org.jboss.ide.eclipse.archives.webtools.ui;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+
+import org.apache.tools.ant.BuildException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.wst.server.core.IServer;
+import org.jboss.ide.eclipse.archives.core.asf.DirectoryScanner;
+import org.jboss.ide.eclipse.archives.core.model.DirectoryScannerFactory;
+import org.jboss.ide.eclipse.as.core.server.internal.ServerAttributeHelper;
+
+public class FilesetContentProvider implements ITreeContentProvider {
+ private static final String FILESET_KEY =
"org.jboss.ide.eclipse.as.ui.views.server.providers.FilesetViewProvider.PropertyKey";
//$NON-NLS-1$
+
+ public static class PathWrapper {
+ private IPath path;
+ private IPath folder;
+
+ public PathWrapper(IPath path, IPath folder) {
+ this.path = path;
+ this.folder = folder;
+ }
+
+ public IPath getFolder() {
+ return folder;
+ }
+
+ public IPath getPath() {
+ return folder.append(path);
+ }
+
+ public String getLocalizedResourceName() {
+ return path.toOSString();
+ }
+ }
+
+ public static class FolderWrapper extends PathWrapper {
+ private HashMap<String, FolderWrapper> childrenFolders;
+ private ArrayList<PathWrapper> children;
+
+ public FolderWrapper(IPath path, IPath folder) {
+ super(path, folder);
+ children = new ArrayList<PathWrapper>();
+ childrenFolders = new HashMap<String, FolderWrapper>();
+ }
+
+ public void addChild(IPath path) {
+ if (path.segmentCount() == 1) {
+ children.add(new PathWrapper(path, getFolder().append(
+ getLocalizedResourceName())));
+ } else {
+ addPath(children, childrenFolders, path, getFolder().append(
+ getLocalizedResourceName()));
+ }
+ }
+
+ public Object[] getChildren() {
+ return children.toArray(new Object[children.size()]);
+ }
+
+ private void addPath(ArrayList<PathWrapper> children,
+ HashMap<String, FolderWrapper> folders, IPath path, IPath folder) {
+ try {
+ FolderWrapper fw = null;
+ if (!folders.containsKey(path.segment(0))) {
+ fw = new FolderWrapper(path.removeLastSegments(path
+ .segmentCount() - 1), folder);
+ folders.put(path.segment(0), fw);
+ children.add(fw);
+ } else {
+ fw = folders.get(path.segment(0));
+ }
+ fw.addChild(path.removeFirstSegments(1));
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ public class ServerWrapper {
+ public IServer server;
+ private Fileset[] children;
+
+ public ServerWrapper(IServer server) {
+ this.server = server;
+ }
+
+ public int hashCode() {
+ return server.getId().hashCode();
+ }
+
+ public boolean equals(Object other) {
+ return other instanceof ServerWrapper
+ && ((ServerWrapper) other).server.getId().equals(
+ server.getId());
+ }
+
+ public void addFileset(Fileset fs) {
+ Fileset[] filesetsNew = new Fileset[children.length + 1];
+ System.arraycopy(children, 0, filesetsNew, 0, children.length);
+ filesetsNew[filesetsNew.length - 1] = fs;
+ children = filesetsNew;
+ saveFilesets();
+ }
+
+ public void removeFileset(Fileset fs) {
+ ArrayList<Fileset> asList = new ArrayList<Fileset>(Arrays
+ .asList(children));
+ asList.remove(fs);
+ children = asList.toArray(new Fileset[asList.size()]);
+ saveFilesets();
+ }
+
+ public Fileset[] getFilesets() {
+ if (children == null)
+ children = loadFilesets();
+ return children;
+ }
+
+ private Fileset[] loadFilesets() {
+ Fileset[] filesets = new Fileset[0];
+ if (server != null) {
+ ServerAttributeHelper helper = ServerAttributeHelper
+ .createHelper(server);
+ List tmp = helper.getAttribute(FILESET_KEY, new ArrayList());
+ String[] asStrings = (String[]) tmp.toArray(new String[tmp
+ .size()]);
+ filesets = new Fileset[asStrings.length];
+ for (int i = 0; i < asStrings.length; i++) {
+ filesets[i] = new Fileset(asStrings[i]);
+ }
+ }
+ return filesets;
+ }
+
+ public void saveFilesets() {
+ if (server != null) {
+ ArrayList<String> list = new ArrayList<String>();
+ for (int i = 0; i < children.length; i++) {
+ list.add(children[i].toString());
+ }
+ ServerAttributeHelper helper = ServerAttributeHelper
+ .createHelper(server);
+ helper.setAttribute(FILESET_KEY, list);
+ helper.save();
+ }
+ }
+ }
+
+ public Object[] getChildren(Object parentElement) {
+ if (parentElement instanceof IServer) {
+ return new Object[] { new ServerWrapper((IServer) parentElement) };
+ }
+ if (parentElement instanceof ServerWrapper) {
+ return ((ServerWrapper) parentElement).getFilesets();
+ } else if (parentElement instanceof Fileset) {
+ Fileset fs = (Fileset) parentElement;
+ IPath[] paths = null;
+ try {
+ paths = findPaths(fs.getFolder(), fs.getIncludesPattern(), fs
+ .getExcludesPattern());
+ } catch (BuildException be) {
+ return new Object[] {};
+ }
+
+ HashMap<String, FolderWrapper> folders = new HashMap<String,
FolderWrapper>();
+ ArrayList<PathWrapper> wrappers = new ArrayList<PathWrapper>();
+ for (int i = 0; i < paths.length; i++) {
+ if (paths[i].segmentCount() == 1) {
+ wrappers.add(new PathWrapper(paths[i], new Path(fs
+ .getFolder())));
+ } else {
+ addPath(wrappers, folders, paths[i], new Path(fs
+ .getFolder()));
+ }
+ }
+ return wrappers.toArray(new Object[wrappers.size()]);
+ } else if (parentElement instanceof FolderWrapper) {
+ return ((FolderWrapper) parentElement).getChildren();
+ }
+ return new Object[0];
+ }
+
+ public Object getParent(Object element) {
+ return null;
+ }
+
+ public boolean hasChildren(Object element) {
+ return getChildren(element).length > 0 ? true : false;
+ }
+
+ public Object[] getElements(Object inputElement) {
+ return null;
+ }
+
+ public void dispose() {
+ }
+
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ }
+
+ private IPath[] findPaths(String dir, String includes, String excludes) {
+ IPath[] paths = new IPath[0];
+ try {
+ if (dir != null) {
+ DirectoryScanner scanner = DirectoryScannerFactory
+ .createDirectoryScanner(dir, null, includes, excludes,
+ null, false, 1, true);
+ if (scanner != null) {
+ String[] files = scanner.getIncludedFiles();
+ paths = new IPath[files.length];
+ for (int i = 0; i < files.length; i++) {
+ paths[i] = new Path(files[i]);
+ }
+ }
+ }
+ } catch (IllegalStateException ise) {
+ }
+ return paths;
+ }
+
+ private static void addPath(ArrayList<PathWrapper> children,
+ HashMap<String, FolderWrapper> folders, IPath path, IPath folder) {
+ try {
+ FolderWrapper fw = null;
+ if (!folders.containsKey(path.segment(0))) {
+ fw = new FolderWrapper(path.removeLastSegments(path
+ .segmentCount() - 1), folder);
+ folders.put(path.segment(0), fw);
+ children.add(fw);
+ } else {
+ fw = folders.get(path.segment(0));
+ }
+ fw.addChild(path.removeFirstSegments(1));
+ } catch (Exception e) {
+ // ignore
+ }
+ }
+}
\ No newline at end of file
Added:
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.archives.webtools/src/org/jboss/ide/eclipse/archives/webtools/ui/FilesetDialog.java
===================================================================
---
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.archives.webtools/src/org/jboss/ide/eclipse/archives/webtools/ui/FilesetDialog.java
(rev 0)
+++
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.archives.webtools/src/org/jboss/ide/eclipse/archives/webtools/ui/FilesetDialog.java 2008-10-31
02:09:33 UTC (rev 11379)
@@ -0,0 +1,199 @@
+package org.jboss.ide.eclipse.archives.webtools.ui;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jface.dialogs.TitleAreaDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.DirectoryDialog;
+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.jboss.ide.eclipse.archives.core.asf.DirectoryScanner;
+import org.jboss.ide.eclipse.archives.core.model.DirectoryScannerFactory;
+import org.jboss.ide.eclipse.archives.ui.util.composites.FilesetPreviewComposite;
+import org.jboss.ide.eclipse.archives.webtools.Messages;
+
+public class FilesetDialog extends TitleAreaDialog {
+ protected Fileset fileset;
+ private String name, dir, includes, excludes;
+ private Button browse;
+ private Text includesText, excludesText, folderText, nameText;
+ private Composite main;
+ private FilesetPreviewComposite preview;
+ protected FilesetDialog(Shell parentShell, String defaultLocation) {
+ super(parentShell);
+ this.fileset = new Fileset();
+ this.fileset.setFolder(defaultLocation);
+
+ }
+ protected FilesetDialog(Shell parentShell, Fileset fileset) {
+ super(parentShell);
+ this.fileset = (Fileset)fileset.clone();
+ }
+ protected Point getInitialSize() {
+ //return new Point(400, 150);
+ Point p = super.getInitialSize();
+ return new Point(500, p.y);
+ }
+ protected int getShellStyle() {
+ return super.getShellStyle() | SWT.RESIZE;
+ }
+
+ protected void configureShell(Shell shell) {
+ super.configureShell(shell);
+ shell.setText(Messages.FilesetsNewFileset);
+ }
+
+ protected Control createDialogArea(Composite parent) {
+ setTitle(Messages.FilesetsDialogTitle);
+ setMessage(Messages.FilesetsDialogMessage);
+
+ Composite sup = (Composite) super.createDialogArea(parent);
+ main = new Composite(sup, SWT.NONE);
+ main.setLayout(new GridLayout(3, false));
+ main.setLayoutData(new GridData(GridData.FILL_BOTH));
+ fillArea(main);
+
+ nameText.setText(fileset.getName());
+ folderText.setText(fileset.getFolder());
+ includesText.setText(fileset.getIncludesPattern());
+ excludesText.setText(fileset.getExcludesPattern());
+
+ addListeners();
+ return sup;
+ }
+
+ protected void addListeners() {
+ ModifyListener mListener = new ModifyListener() {
+ public void modifyText(ModifyEvent e) {
+ textModified();
+ }
+ };
+ nameText.addModifyListener(mListener);
+ folderText.addModifyListener(mListener);
+ includesText.addModifyListener(mListener);
+ excludesText.addModifyListener(mListener);
+
+ browse.addSelectionListener(new SelectionListener() {
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+ public void widgetSelected(SelectionEvent e) {
+ DirectoryDialog d = new DirectoryDialog(new Shell());
+ d.setFilterPath(folderText.getText());
+ String x = d.open();
+ if( x != null )
+ folderText.setText(x);
+ }
+ });
+ }
+
+ protected void textModified() {
+ name = nameText.getText();
+ dir = folderText.getText();
+ includes = includesText.getText();
+ excludes = excludesText.getText();
+ fileset.setName(name);
+ fileset.setFolder(dir);
+ fileset.setIncludesPattern(includes);
+ fileset.setExcludesPattern(excludes);
+ updatePreview();
+ }
+ protected void fillArea(Composite main) {
+ Label nameLabel = new Label(main, SWT.NONE);
+ nameLabel.setText(Messages.FilesetsNewName);
+
+ nameText = new Text(main, SWT.BORDER);
+ nameText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
+
+ Label folderLabel = new Label(main, SWT.NONE);
+ folderLabel.setText(Messages.FilesetsNewRootDir);
+
+ folderText = new Text(main, SWT.BORDER);
+ folderText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
+ browse = new Button(main, SWT.PUSH);
+ browse.setText(Messages.FilesetsNewBrowse);
+
+ Label includesLabel = new Label(main, SWT.NONE);
+ includesLabel.setText(Messages.FilesetsNewIncludes);
+
+ includesText = new Text(main, SWT.BORDER);
+ includesText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
+
+ Label excludeLabel= new Label(main, SWT.NONE);
+ excludeLabel.setText(Messages.FilesetsNewExcludes);
+
+ excludesText = new Text(main, SWT.BORDER);
+ excludesText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
+
+ Group previewWrapper = new Group(main, SWT.NONE);
+
+ previewWrapper.setLayout(new GridLayout());
+ GridLayout gridLayout = new GridLayout();
+ //gridLayout.numColumns = 3;
+ //gridLayout.verticalSpacing = 9;
+
+ GridData data = new GridData(GridData.FILL_BOTH);
+ data.grabExcessHorizontalSpace = true;
+ data.grabExcessVerticalSpace = true;
+ data.horizontalSpan = 3;
+ data.minimumHeight = 200;
+
+ previewWrapper.setLayoutData(data);
+ previewWrapper.setText(Messages.FilesetsNewPreview);
+
+ previewWrapper.setLayout(new FillLayout());
+ preview = new FilesetPreviewComposite(previewWrapper, SWT.NONE);
+ }
+
+ private void updatePreview() {
+ preview.setInput(findPaths(dir, includes, excludes));
+ }
+
+ public String getDir() {
+ return dir;
+ }
+ public String getExcludes() {
+ return excludes;
+ }
+ public String getIncludes() {
+ return includes;
+ }
+ public String getName() {
+ return name;
+ }
+ public Fileset getFileset() {
+ return fileset;
+ }
+
+
+ private static IPath[] findPaths(String dir, String includes, String excludes) {
+ IPath[] paths = new IPath[0];
+ try {
+ if( dir != null ) {
+ DirectoryScanner scanner =
+ DirectoryScannerFactory.createDirectoryScanner(dir, null, includes, excludes, null,
false, 1, true);
+ if( scanner != null ) {
+ String[] files = scanner.getIncludedFiles();
+ paths = new IPath[files.length];
+ for( int i = 0; i < files.length; i++ ) {
+ paths[i] = new Path(files[i]);
+ }
+ }
+ }
+ } catch( IllegalStateException ise ) {}
+ return paths;
+ }
+
+}
\ No newline at end of file
Added:
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.archives.webtools/src/org/jboss/ide/eclipse/archives/webtools/ui/FilesetLabelProvider.java
===================================================================
---
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.archives.webtools/src/org/jboss/ide/eclipse/archives/webtools/ui/FilesetLabelProvider.java
(rev 0)
+++
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.archives.webtools/src/org/jboss/ide/eclipse/archives/webtools/ui/FilesetLabelProvider.java 2008-10-31
02:09:33 UTC (rev 11379)
@@ -0,0 +1,70 @@
+package org.jboss.ide.eclipse.archives.webtools.ui;
+
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.content.IContentType;
+import org.eclipse.core.runtime.content.IContentTypeManager;
+import org.eclipse.core.runtime.content.IContentTypeMatcher;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.jface.resource.LocalResourceManager;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
+import org.jboss.ide.eclipse.archives.webtools.ui.FilesetContentProvider.FolderWrapper;
+import org.jboss.ide.eclipse.archives.webtools.ui.FilesetContentProvider.PathWrapper;
+import org.jboss.ide.eclipse.archives.webtools.ui.FilesetContentProvider.ServerWrapper;
+import org.jboss.ide.eclipse.as.ui.JBossServerUIPlugin;
+
+public class FilesetLabelProvider extends LabelProvider {
+
+ private LocalResourceManager resourceManager;
+ private Image rootImage;
+ public FilesetLabelProvider() {
+ super();
+ this.resourceManager = new LocalResourceManager(JFaceResources.getResources());
+ ImageDescriptor des =
ImageDescriptor.createFromURL(JBossServerUIPlugin.getDefault().getBundle().getEntry("icons/multiple_files.gif"));
//$NON-NLS-1$
+ rootImage = des.createImage();
+ }
+
+ public Image getImage(Object element) {
+ if( element instanceof Fileset ) {
+ return PlatformUI.getWorkbench().getSharedImages()
+ .getImage(ISharedImages.IMG_OBJ_FOLDER);
+ } else if( element instanceof FolderWrapper ) {
+ return PlatformUI.getWorkbench().getSharedImages()
+ .getImage(ISharedImages.IMG_OBJ_FOLDER);
+ } else if( element instanceof PathWrapper ) {
+ String fileName = ((PathWrapper)element).getPath().toOSString();
+ IContentTypeManager manager = Platform.getContentTypeManager();
+ IContentTypeMatcher matcher = manager.getMatcher(null, null);
+ IContentType contentType = matcher.findContentTypeFor(fileName);
+ ImageDescriptor descriptor = PlatformUI.getWorkbench().getEditorRegistry()
+ .getImageDescriptor(fileName, contentType);
+ if (descriptor == null) {
+ descriptor = PlatformUI.getWorkbench().getSharedImages()
+ .getImageDescriptor(ISharedImages.IMG_OBJ_FILE);
+ }
+ return resourceManager.createImage(descriptor);
+ } else if( element instanceof ServerWrapper ) {
+ return rootImage;
+ }
+ return null;
+ }
+
+ public String getText(Object element) {
+ if( element instanceof PathWrapper ) return
((PathWrapper)element).getLocalizedResourceName();
+ if( element instanceof Fileset ) return ((Fileset)element).getName() + "
" + ((Fileset)element).getFolder(); //$NON-NLS-1$
+ if( element instanceof ServerWrapper ) return "Filesets"; //$NON-NLS-1$
+ return null;
+ }
+
+
+ public void dispose() {
+ resourceManager.dispose();
+ resourceManager = null;
+ rootImage.dispose();
+ super.dispose();
+ }
+
+}
Modified:
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.archives.webtools/src/org/jboss/ide/eclipse/archives/webtools/ui/FilesetViewProvider.java
===================================================================
---
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.archives.webtools/src/org/jboss/ide/eclipse/archives/webtools/ui/FilesetViewProvider.java 2008-10-30
22:32:17 UTC (rev 11378)
+++
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.archives.webtools/src/org/jboss/ide/eclipse/archives/webtools/ui/FilesetViewProvider.java 2008-10-31
02:09:33 UTC (rev 11379)
@@ -44,7 +44,6 @@
import org.eclipse.core.runtime.content.IContentTypeMatcher;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.dialogs.TitleAreaDialog;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.resource.LocalResourceManager;
@@ -53,24 +52,9 @@
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.layout.FillLayout;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.DirectoryDialog;
-import org.eclipse.swt.widgets.Group;
-import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IEditorDescriptor;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.ISharedImages;
@@ -82,15 +66,11 @@
import org.eclipse.ui.internal.Workbench;
import org.eclipse.ui.part.FileEditorInput;
import org.eclipse.wst.server.core.IServer;
-import org.jboss.ide.eclipse.archives.core.asf.DirectoryScanner;
-import org.jboss.ide.eclipse.archives.core.model.DirectoryScannerFactory;
-import org.jboss.ide.eclipse.archives.ui.util.composites.FilesetPreviewComposite;
import org.jboss.ide.eclipse.archives.webtools.Messages;
import org.jboss.ide.eclipse.as.core.server.IDeployableServer;
import org.jboss.ide.eclipse.as.core.server.internal.ServerAttributeHelper;
import org.jboss.ide.eclipse.as.core.util.FileUtil;
import org.jboss.ide.eclipse.as.ui.JBossServerUIPlugin;
-import org.jboss.ide.eclipse.as.ui.views.server.extensions.ServerViewProvider;
import
org.jboss.ide.eclipse.as.ui.views.server.extensions.SimplePropertiesViewExtension;
/**
@@ -99,425 +79,24 @@
*
*/
public class FilesetViewProvider extends SimplePropertiesViewExtension {
+/*
- private static final String FILESET_KEY =
"org.jboss.ide.eclipse.as.ui.views.server.providers.FilesetViewProvider.PropertyKey";
//$NON-NLS-1$
- private static final String HASH_SEPARATOR = "::_::"; //$NON-NLS-1$
- private Action createFilter, deleteFilter, editFilter, deleteFileAction,
editFileAction;
-
private FilesetContentProvider contentProvider;
private LabelProvider labelProvider;
private Fileset[] filesets;
private Object[] selection;
- public FilesetViewProvider() {
- contentProvider = new FilesetContentProvider();
- labelProvider = new FilesetLabelProvider();
- createActions();
- }
- protected boolean supports(IServer server) {
- return server != null && (isJBossDeployable(server) || server.getRuntime() !=
null);
}
- protected void createActions() {
- createFilter = new Action() {
- public void run() {
- IDeployableServer server =
(IDeployableServer)contentProvider.server.loadAdapter(IDeployableServer.class, new
NullProgressMonitor());
- String location = null;
- if( server != null )
- location = server.getConfigDirectory();
- else
- location = contentProvider.server.getRuntime().getLocation().toOSString();
- if( location != null ) {
- FilesetDialog d = new FilesetDialog(new Shell(), location);
- if( d.open() == Window.OK ) {
- Fileset fs = d.getFileset();
- Fileset[] filesetsNew = new Fileset[filesets.length + 1];
- System.arraycopy(filesets, 0, filesetsNew, 0, filesets.length);
- filesetsNew[filesetsNew.length-1] = fs;
- filesets = filesetsNew;
- saveFilesets();
- }
- }
- }
- };
- createFilter.setText(Messages.FilesetsCreateFilter);
- deleteFilter = new Action() {
- public void run() {
- if( selection.length == 1 && selection[0] instanceof Fileset ) {
- try {
- ArrayList<Fileset> asList = new
ArrayList<Fileset>(Arrays.asList(filesets));
- asList.remove(selection[0]);
- filesets = asList.toArray(new Fileset[asList.size()]);
- saveFilesets();
- } catch( Exception e ) {
- e.printStackTrace();
- }
- }
- }
- };
- deleteFilter.setText(Messages.FilesetsDeleteFilter);
- editFilter = new Action() {
- public void run() {
- Fileset sel = selection.length == 1 && selection[0] instanceof Fileset ?
(Fileset)selection[0] : null;
- if( sel == null ) return;
- FilesetDialog d = new FilesetDialog(new Shell(), sel);
- if( d.open() == Window.OK ) {
- Fileset ret = d.getFileset();
- sel.setName(ret.getName());
- sel.setFolder(ret.getFolder());
- sel.setIncludesPattern(ret.getIncludesPattern());
- sel.setExcludesPattern(ret.getExcludesPattern());
- saveFilesets();
- }
- }
- };
- editFilter.setText(Messages.FilesetsEditFilter);
- deleteFileAction = new Action() {
- public void run() {
- try {
- Shell shell = Workbench.getInstance().getActiveWorkbenchWindow().getShell();
- File[] files = getSelectedFiles();
- MessageBox mb = new MessageBox(shell,SWT.ICON_QUESTION | SWT.OK | SWT.CANCEL);
- mb.setText(Messages.DeleteFiles);
- mb.setMessage(Messages.DeleteFilesMessage);
- if( mb.open() == SWT.OK) {
- for( int i = 0; i < files.length; i++ )
- FileUtil.safeDelete(files[i]);
- refreshViewer();
- }
- } catch( Exception e ) {
- }
- }
- };
- deleteFileAction.setText(Messages.FilesetsDeleteFile);
- editFileAction = new Action() {
- public void run() {
- File[] files = getSelectedFiles();
- IWorkbench wb = PlatformUI.getWorkbench();
- IWorkbenchWindow win = wb.getActiveWorkbenchWindow();
- IWorkbenchPage page = win.getActivePage();
- for( int i = 0; i < files.length; i++ ) {
- try {
- IFile eclipseFile = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(new
Path(files[i].getAbsolutePath()));
- IFileStore fileStore= EFS.getLocalFileSystem().fromLocalFile(files[i]);
- if( eclipseFile != null ) {
- IEditorInput input = new FileEditorInput(eclipseFile);
- IEditorDescriptor desc = PlatformUI.getWorkbench().
- getEditorRegistry().getDefaultEditor(files[i].getName());
- if( desc != null )
- page.openEditor(input, desc.getId());
- } else if( fileStore != null ){
- IEditorInput input = new FileStoreEditorInput(fileStore);
- IEditorDescriptor desc = PlatformUI.getWorkbench().
- getEditorRegistry().getDefaultEditor(files[i].getName());
- if( desc != null )
- page.openEditor(input, desc.getId());
- }
- } catch( Exception e ) {
- IStatus status = new Status(IStatus.ERROR, JBossServerUIPlugin.PLUGIN_ID,
Messages.FilesetsCannotOpenFile, e);
- JBossServerUIPlugin.getDefault().getLog().log(status);
- }
- }
- }
- };
- editFileAction.setText(Messages.FilesetsEditFile);
- }
- protected File[] getSelectedFiles() {
- ArrayList<File> tmp = new ArrayList<File>();
- for( int i = 0; i < selection.length; i++ ) {
- tmp.add(((PathWrapper)selection[i]).getPath().toFile());
- }
- return (File[]) tmp.toArray(new File[tmp.size()]);
- }
- public static class PathWrapper {
- private IPath path;
- private IPath folder;
- public PathWrapper(IPath path, IPath folder) {
- this.path = path;
- this.folder = folder;
- }
- /**
- * @return the folder
- */
- public IPath getFolder() {
- return folder;
- }
- /**
- * @return the path
- */
- public IPath getPath() {
- return folder.append(path);
- }
- public String getLocalizedResourceName() {
- return path.toOSString();
- }
- }
- public static class FolderWrapper extends PathWrapper {
- private HashMap<String, FolderWrapper> childrenFolders;
- private ArrayList<PathWrapper> children;
- public FolderWrapper(IPath path, IPath folder) {
- super(path, folder);
- children = new ArrayList<PathWrapper>();
- childrenFolders = new HashMap<String, FolderWrapper>();
- }
- public void addChild(IPath path) {
- if( path.segmentCount() == 1 ) {
- children.add(new PathWrapper(path, getFolder().append(getLocalizedResourceName())));
- } else {
- addPath(children, childrenFolders, path,
getFolder().append(getLocalizedResourceName()));
- }
- }
- public Object[] getChildren() {
- return children.toArray(new Object[children.size()]);
- }
- }
- private static void addPath(ArrayList<PathWrapper> children, HashMap<String,
FolderWrapper> folders, IPath path, IPath folder) {
- try {
- FolderWrapper fw = null;
- if( !folders.containsKey(path.segment(0))) {
- fw = new FolderWrapper(path.removeLastSegments(path.segmentCount()-1), folder);
- folders.put(path.segment(0), fw);
- children.add(fw);
- } else {
- fw = folders.get( path.segment(0));
- }
- fw.addChild(path.removeFirstSegments(1));
- } catch( Exception e ) {
- e.printStackTrace();
- }
- }
- public class FilesetContentProvider implements ITreeContentProvider {
- public IServer server;
- public Object[] getChildren(Object parentElement) {
- if( parentElement instanceof ServerViewProvider ) {
- return filesets == null ? new Object[]{} : filesets;
- } else if( parentElement instanceof Fileset ) {
- Fileset fs = (Fileset)parentElement;
- IPath[] paths = null;
- try {
- paths = findPaths(fs.getFolder(),
- fs.getIncludesPattern(),
- fs.getExcludesPattern());
- } catch( BuildException be ) {
- return new Object[]{};
- }
- HashMap<String, FolderWrapper> folders = new HashMap<String,
FolderWrapper>();
- ArrayList<PathWrapper> wrappers = new ArrayList<PathWrapper>();
- for( int i = 0; i < paths.length; i++ ) {
- if( paths[i].segmentCount() == 1 ) {
- wrappers.add(new PathWrapper(paths[i], new Path(fs.getFolder())));
- } else {
- addPath(wrappers, folders, paths[i], new Path(fs.getFolder()));
- }
- }
- return wrappers.toArray(new Object[wrappers.size()]);
- } else if( parentElement instanceof FolderWrapper ) {
- return ((FolderWrapper)parentElement).getChildren();
- }
- return new Object[0];
- }
-
- public Object getParent(Object element) {
- return null;
- }
-
- public boolean hasChildren(Object element) {
- return getChildren(element).length > 0 ? true : false;
- }
-
- public Object[] getElements(Object inputElement) {
- return null;
- }
-
- public void dispose() {
- }
-
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
- if( newInput instanceof IServer ) {
- server = (IServer)newInput;
- loadFilesets();
- }
- }
- }
-
- public void loadFilesets() {
- IServer server = contentProvider.server;
- if( server != null ) {
- ServerAttributeHelper helper = ServerAttributeHelper.createHelper(server);
- List tmp = helper.getAttribute(FILESET_KEY, new ArrayList());
- String[] asStrings = (String[]) tmp.toArray(new String[tmp.size()]);
- filesets = new Fileset[asStrings.length];
- for( int i = 0; i < asStrings.length; i++ ) {
- filesets[i] = new Fileset(asStrings[i]);
- }
- }
- }
-
- public void saveFilesets() {
- IServer server = contentProvider.server;
- if( server != null ) {
- ArrayList<String> list = new ArrayList<String>();
- for( int i = 0; i < filesets.length; i++ ) {
- list.add(filesets[i].toString());
- }
- ServerAttributeHelper helper = ServerAttributeHelper.createHelper(server);
- helper.setAttribute(FILESET_KEY, list);
- helper.save();
- }
- }
-
- public class Fileset implements Cloneable {
- private String name, folder, includesPattern, excludesPattern;
- public Fileset() {
- }
- public Fileset(String string) {
- try {
- name = folder = includesPattern =excludesPattern = ""; //$NON-NLS-1$
- String[] parts = string.split("\n"); //$NON-NLS-1$
- name = parts[0];
- folder = parts[1];
- includesPattern = parts[2];
- excludesPattern = parts[3];
- } catch( ArrayIndexOutOfBoundsException aioobe) {}
- }
-
- public Fileset(String name, String folder, String inc, String exc) {
- this.name = name;
- this.folder = folder;
- includesPattern = inc;
- excludesPattern = exc;
- }
- public String toString() {
- return name + "\n" + folder + "\n" + includesPattern +
"\n" + excludesPattern; //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
- }
- /**
- * @return the folder
- */
- public String getFolder() {
- return folder == null ? "" : folder; //$NON-NLS-1$
- }
- /**
- * @return the name
- */
- public String getName() {
- return name == null ? "" : name; //$NON-NLS-1$
- }
- /**
- * @return the excludesPattern
- */
- public String getExcludesPattern() {
- return excludesPattern == null ? "" : excludesPattern; //$NON-NLS-1$
- }
- /**
- * @return the includesPattern
- */
- public String getIncludesPattern() {
- return includesPattern == null ? "" : includesPattern; //$NON-NLS-1$
- }
-
- /**
- * @param excludesPattern the excludesPattern to set
- */
- public void setExcludesPattern(String excludesPattern) {
- this.excludesPattern = excludesPattern;
- }
-
- /**
- * @param folder the folder to set
- */
- public void setFolder(String folder) {
- this.folder = folder;
- }
-
- /**
- * @param includesPattern the includesPattern to set
- */
- public void setIncludesPattern(String includesPattern) {
- this.includesPattern = includesPattern;
- }
-
- /**
- * @param name the name to set
- */
- public void setName(String name) {
- this.name = name;
- }
-
- public Object clone() {
- try {
- return super.clone();
- } catch( Exception e ) {}
- return null;
- }
-
- public boolean equals(Object other) {
- if( !(other instanceof Fileset)) return false;
- if( other == this ) return true;
- Fileset o = (Fileset)other;
- return o.getName().equals(getName()) && o.getFolder().equals(getFolder())
- && o.getIncludesPattern().equals(getIncludesPattern()) &&
o.getExcludesPattern().equals(getExcludesPattern());
- }
- public int hashCode() {
- return (name + HASH_SEPARATOR + folder + HASH_SEPARATOR + includesPattern +
HASH_SEPARATOR + excludesPattern + HASH_SEPARATOR).hashCode();
- }
- }
-
- public class FilesetLabelProvider extends LabelProvider {
-
- private LocalResourceManager resourceManager;
-
- public FilesetLabelProvider() {
- super();
- this.resourceManager = new LocalResourceManager(JFaceResources.getResources());
- }
-
- public Image getImage(Object element) {
- if( element instanceof Fileset ) {
- return PlatformUI.getWorkbench().getSharedImages()
- .getImage(ISharedImages.IMG_OBJ_FOLDER);
- } else if( element instanceof FolderWrapper ) {
- return PlatformUI.getWorkbench().getSharedImages()
- .getImage(ISharedImages.IMG_OBJ_FOLDER);
- } else if( element instanceof PathWrapper ) {
- String fileName = ((PathWrapper)element).getPath().toOSString();
- IContentTypeManager manager = Platform.getContentTypeManager();
- IContentTypeMatcher matcher = manager.getMatcher(null, null);
- IContentType contentType = matcher.findContentTypeFor(fileName);
- ImageDescriptor descriptor = PlatformUI.getWorkbench().getEditorRegistry()
- .getImageDescriptor(fileName, contentType);
- if (descriptor == null) {
- descriptor = PlatformUI.getWorkbench().getSharedImages()
- .getImageDescriptor(ISharedImages.IMG_OBJ_FILE);
- }
- return resourceManager.createImage(descriptor);
- }
- return null;
- }
-
- public String getText(Object element) {
- if( element instanceof PathWrapper ) return
((PathWrapper)element).getLocalizedResourceName();
- if( element instanceof Fileset ) return ((Fileset)element).getName() + "
" + ((Fileset)element).getFolder(); //$NON-NLS-1$
- return element == null ? "" : element.toString();//$NON-NLS-1$
- }
-
-
- public void dispose() {
- resourceManager.dispose();
- resourceManager = null;
- super.dispose();
- }
-
- }
-
public void fillContextMenu(Shell shell, IMenuManager menu, Object[] selection) {
this.selection = selection;
if( selection.length == 1 && selection[0] instanceof ServerViewProvider ) {
@@ -533,27 +112,8 @@
}
}
- protected boolean allPathWrappers(Object[] list) {
- boolean result = true;
- for( int i = 0; i < list.length; i++ )
- result &= list[i] instanceof PathWrapper;
- return result;
- }
- protected boolean canDelete(Object[] list ) {
- boolean result = true;
- for( int i = 0; i < list.length; i++ )
- result &= ((PathWrapper)selection[i]).getPath().toFile().exists();
- return result;
- }
- protected boolean canEdit(Object[] list) {
- for( int i = 0; i < list.length; i++ )
- if( canEdit(((PathWrapper)selection[i]).getPath().toFile()))
- return true;
- return false;
- }
-
protected boolean canEdit(File file) {
IFile eclipseFile = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(new
Path(file.getAbsolutePath()));
IFileStore fileStore= EFS.getLocalFileSystem().fromLocalFile(file);
@@ -590,176 +150,6 @@
return null;
}
- private IPath[] findPaths(String dir, String includes, String excludes) {
- IPath[] paths = new IPath[0];
- try {
- if( dir != null ) {
- DirectoryScanner scanner =
- DirectoryScannerFactory.createDirectoryScanner(dir, null, includes, excludes, null,
false, 1, true);
- if( scanner != null ) {
- String[] files = scanner.getIncludedFiles();
- paths = new IPath[files.length];
- for( int i = 0; i < files.length; i++ ) {
- paths[i] = new Path(files[i]);
- }
- }
- }
- } catch( IllegalStateException ise ) {}
- return paths;
- }
- protected class FilesetDialog extends TitleAreaDialog {
- protected Fileset fileset;
- private String name, dir, includes, excludes;
- private Button browse;
- private Text includesText, excludesText, folderText, nameText;
- private Composite main;
- private FilesetPreviewComposite preview;
- protected FilesetDialog(Shell parentShell, String defaultLocation) {
- super(parentShell);
- this.fileset = new Fileset();
- this.fileset.setFolder(defaultLocation);
-
- }
- protected FilesetDialog(Shell parentShell, Fileset fileset) {
- super(parentShell);
- this.fileset = (Fileset)fileset.clone();
- }
- protected Point getInitialSize() {
- //return new Point(400, 150);
- Point p = super.getInitialSize();
- return new Point(500, p.y);
- }
- protected int getShellStyle() {
- return super.getShellStyle() | SWT.RESIZE;
- }
-
- protected void configureShell(Shell shell) {
- super.configureShell(shell);
- shell.setText(Messages.FilesetsNewFileset);
- }
-
- protected Control createDialogArea(Composite parent) {
- setTitle(Messages.FilesetsDialogTitle);
- setMessage(Messages.FilesetsDialogMessage);
-
- Composite sup = (Composite) super.createDialogArea(parent);
- main = new Composite(sup, SWT.NONE);
- main.setLayout(new GridLayout(3, false));
- main.setLayoutData(new GridData(GridData.FILL_BOTH));
- fillArea(main);
-
- nameText.setText(fileset.getName());
- folderText.setText(fileset.getFolder());
- includesText.setText(fileset.getIncludesPattern());
- excludesText.setText(fileset.getExcludesPattern());
-
- addListeners();
- return sup;
- }
-
- protected void addListeners() {
- ModifyListener mListener = new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- textModified();
- }
- };
- nameText.addModifyListener(mListener);
- folderText.addModifyListener(mListener);
- includesText.addModifyListener(mListener);
- excludesText.addModifyListener(mListener);
-
- browse.addSelectionListener(new SelectionListener() {
- public void widgetDefaultSelected(SelectionEvent e) {
- }
- public void widgetSelected(SelectionEvent e) {
- DirectoryDialog d = new DirectoryDialog(new Shell());
- d.setFilterPath(folderText.getText());
- String x = d.open();
- if( x != null )
- folderText.setText(x);
- }
- });
- }
-
- protected void textModified() {
- name = nameText.getText();
- dir = folderText.getText();
- includes = includesText.getText();
- excludes = excludesText.getText();
- fileset.setName(name);
- fileset.setFolder(dir);
- fileset.setIncludesPattern(includes);
- fileset.setExcludesPattern(excludes);
- updatePreview();
- }
- protected void fillArea(Composite main) {
- Label nameLabel = new Label(main, SWT.NONE);
- nameLabel.setText(Messages.FilesetsNewName);
-
- nameText = new Text(main, SWT.BORDER);
- nameText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
-
- Label folderLabel = new Label(main, SWT.NONE);
- folderLabel.setText(Messages.FilesetsNewRootDir);
-
- folderText = new Text(main, SWT.BORDER);
- folderText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
- browse = new Button(main, SWT.PUSH);
- browse.setText(Messages.FilesetsNewBrowse);
-
- Label includesLabel = new Label(main, SWT.NONE);
- includesLabel.setText(Messages.FilesetsNewIncludes);
-
- includesText = new Text(main, SWT.BORDER);
- includesText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
-
- Label excludeLabel= new Label(main, SWT.NONE);
- excludeLabel.setText(Messages.FilesetsNewExcludes);
-
- excludesText = new Text(main, SWT.BORDER);
- excludesText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
-
- Group previewWrapper = new Group(main, SWT.NONE);
-
- previewWrapper.setLayout(new GridLayout());
- GridLayout gridLayout = new GridLayout();
- //gridLayout.numColumns = 3;
- //gridLayout.verticalSpacing = 9;
-
- GridData data = new GridData(GridData.FILL_BOTH);
- data.grabExcessHorizontalSpace = true;
- data.grabExcessVerticalSpace = true;
- data.horizontalSpan = 3;
- data.minimumHeight = 200;
-
- previewWrapper.setLayoutData(data);
- previewWrapper.setText(Messages.FilesetsNewPreview);
-
- previewWrapper.setLayout(new FillLayout());
- preview = new FilesetPreviewComposite(previewWrapper, SWT.NONE);
- }
-
- private void updatePreview() {
- preview.setInput(findPaths(dir, includes, excludes));
- }
-
- public String getDir() {
- return dir;
- }
- public String getExcludes() {
- return excludes;
- }
- public String getIncludes() {
- return includes;
- }
- public String getName() {
- return name;
- }
- public Fileset getFileset() {
- return fileset;
- }
-
- }
-
+*/
}
Modified:
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/actions/ServerActionMessages.java
===================================================================
---
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/actions/ServerActionMessages.java 2008-10-30
22:32:17 UTC (rev 11378)
+++
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/actions/ServerActionMessages.java 2008-10-31
02:09:33 UTC (rev 11379)
@@ -3,7 +3,7 @@
import org.eclipse.osgi.util.NLS;
public class ServerActionMessages extends NLS {
- private static final String BUNDLE_NAME =
"org.jboss.tools.as.wst.server.ui.action.messages";
+ private static final String BUNDLE_NAME =
"org.jboss.ide.eclipse.as.ui.actions.messages";
static {
// load message values from bundle file
Modified:
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/extensions/EventLogContentProvider.java
===================================================================
---
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/extensions/EventLogContentProvider.java 2008-10-30
22:32:17 UTC (rev 11378)
+++
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/extensions/EventLogContentProvider.java 2008-10-31
02:09:33 UTC (rev 11379)
@@ -29,10 +29,11 @@
public static final int _FALSE_ = 2;
private Viewer viewer;
+ private IEventLogListener listener;
public EventLogContentProvider() {
EventLogModel.enableLogging();
- EventLogModel.getDefault().addListener(new IEventLogListener() {
+ listener = new IEventLogListener() {
public void eventModelChanged(String serverId,
EventLogTreeItem changed) {
if( viewer instanceof StructuredViewer ) {
@@ -46,7 +47,8 @@
}
}
}
- });
+ };
+ EventLogModel.getDefault().addListener(listener);
}
public Object[] getChildren(Object parentElement) {
@@ -143,6 +145,7 @@
public void dispose() {
EventLogModel.disableLogging();
+ EventLogModel.getDefault().removeListener(listener);
}
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
Modified:
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/tools/as/wst/server/ui/ServerContentProvider.java
===================================================================
---
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/tools/as/wst/server/ui/ServerContentProvider.java 2008-10-30
22:32:17 UTC (rev 11378)
+++
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/tools/as/wst/server/ui/ServerContentProvider.java 2008-10-31
02:09:33 UTC (rev 11379)
@@ -132,7 +132,13 @@
}
public void dispose() {
- // do nothing
+ // remove all listeners!
+ ServerCore.removeServerLifecycleListener(serverResourceListener);
+ IServer[] servers = ServerCore.getServers();
+ for( int i = 0;i < servers.length; i++ ) {
+ servers[i].removePublishListener(publishListener);
+ servers[i].removeServerListener(serverListener);
+ }
}
Modified: workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.as.ui/plugin.xml
===================================================================
---
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.as.ui/plugin.xml 2008-10-30
22:32:17 UTC (rev 11378)
+++
workspace/rstryker/viewRefactor/plugins/org.jboss.ide.eclipse.as.ui/plugin.xml 2008-10-31
02:09:33 UTC (rev 11379)
@@ -94,16 +94,7 @@
typeIds="jboss.singlefile"/>
</extension>
- <extension
- point="org.eclipse.ui.preferencePages">
- <page
- category="org.eclipse.wst.server.ui.preferencePage"
-
class="org.jboss.tools.as.wst.server.ui.views.server.preferencepages.ViewPreferencePage"
- id="org.jboss.ide.eclipse.as.ui.jbossServerViewPrefPage"
- name="JBoss Server View"/>
- </extension>
-
<extension
point="org.eclipse.wst.common.project.facet.core.runtimes">
<adapter>
<runtime-component
id="org.jboss.ide.eclipse.as.runtime.component"/>