[jboss-cvs] jbosside/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/providers ...
Robert Stryker
rawblem at gmail.com
Wed Dec 13 13:32:51 EST 2006
User: rawb
Date: 06/12/13 13:32:51
Added: as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/providers
FilesetViewProvider.java
Log:
Brand spankin new extension... allows you to browse folders on your HD quickly, set filters, etc
Revision Changes Path
1.1 date: 2006/12/13 18:32:51; author: rawb; state: Exp;jbosside/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/providers/FilesetViewProvider.java
Index: FilesetViewProvider.java
===================================================================
package org.jboss.ide.eclipse.as.ui.views.server.providers;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Properties;
import org.eclipse.core.filesystem.EFS;
import org.eclipse.core.filesystem.IFileStore;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
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.action.Action;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.LabelProvider;
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.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.Label;
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;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.internal.editors.text.JavaFileEditorInput;
import org.eclipse.ui.internal.util.SWTResourceUtil;
import org.eclipse.wst.server.core.IServer;
import org.jboss.ide.eclipse.as.core.server.JBossServer;
import org.jboss.ide.eclipse.as.core.server.ServerAttributeHelper;
import org.jboss.ide.eclipse.as.ui.views.server.extensions.ServerViewProvider;
import org.jboss.ide.eclipse.as.ui.views.server.extensions.SimplePropertiesViewExtension;
import org.jboss.ide.eclipse.packages.core.model.PackagesCore;
public class FilesetViewProvider extends SimplePropertiesViewExtension {
private static final String FILESET_KEY = "org.jboss.ide.eclipse.as.ui.views.server.providers.FilesetViewProvider.PropertyKey";
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 void createActions() {
createFilter = new Action() {
public void run() {
JBossServer server = (JBossServer)contentProvider.server.loadAdapter(JBossServer.class, new NullProgressMonitor());
FilesetDialog d = new FilesetDialog(new Shell(), server);
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("Create Filter");
deleteFilter = new Action() {
public void run() {
if( selection instanceof Fileset ) {
try {
ArrayList asList = new ArrayList(Arrays.asList(filesets));
asList.remove(selection);
filesets = (Fileset[]) asList.toArray(new Fileset[asList.size()]);
saveFilesets();
} catch( Exception e ) {
e.printStackTrace();
}
}
}
};
deleteFilter.setText("Delete Filter");
editFilter = new Action() {
public void run() {
Fileset sel = (Fileset)selection;
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("Edit Filter");
deleteFileAction = new Action() {
public void run() {
try {
PathWrapper wrapper = (PathWrapper)selection;
File file = wrapper.getPath().toFile();
file.delete();
} catch( Exception e ) {
}
}
};
deleteFileAction.setText("Delete File");
editFileAction = new Action() {
public void run() {
try {
PathWrapper wrapper = (PathWrapper)selection;
File file = wrapper.getPath().toFile();
IWorkbench wb = PlatformUI.getWorkbench();
IWorkbenchWindow win = wb.getActiveWorkbenchWindow();
IWorkbenchPage page = win.getActivePage();
IFileStore fileStore= EFS.getLocalFileSystem().fromLocalFile(file);
if( fileStore != null ) {
IEditorInput input = new JavaFileEditorInput(fileStore);
IEditorDescriptor desc = PlatformUI.getWorkbench().
getEditorRegistry().getDefaultEditor(file.getName());
page.openEditor(input, desc.getId());
}
} catch( Exception e ) {
}
}
};
editFileAction.setText("Edit File");
}
public static class PathWrapper {
private IPath path;
private String folder;
public PathWrapper(IPath path, String folder) {
this.path = path;
this.folder = folder;
}
/**
* @return the folder
*/
public String getFolder() {
return folder;
}
/**
* @return the path
*/
public IPath getPath() {
return path;
}
public String getLocalizedResourceName() {
return path.toOSString().substring(new Path(folder).toOSString().length());
}
}
public class FilesetContentProvider implements ITreeContentProvider {
public IServer server;
public Object[] getChildren(Object parentElement) {
if( parentElement instanceof ServerViewProvider ) {
return filesets;
} else if( parentElement instanceof Fileset ) {
Fileset fs = (Fileset)parentElement;
IPath[] paths = PackagesCore.findMatchingPaths(
new Path(fs.getFolder()), fs.getIncludesPattern(), fs.getExcludesPattern());
PathWrapper[] wrappers = new PathWrapper[paths.length];
for( int i = 0; i < wrappers.length; i++ ) {
wrappers[i] = new PathWrapper(paths[i], fs.getFolder());
}
return wrappers;
}
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 ) {
JBossServer jbs = (JBossServer)server.loadAdapter(JBossServer.class, new NullProgressMonitor());
ServerAttributeHelper helper = jbs.getAttributeHelper();
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 list = new ArrayList();
for( int i = 0; i < filesets.length; i++ ) {
list.add(filesets[i].toString());
}
JBossServer jbs = (JBossServer)server.loadAdapter(JBossServer.class, new NullProgressMonitor());
ServerAttributeHelper helper = jbs.getAttributeHelper();
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 = "";
String[] parts = string.split("\n");
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;
}
/**
* @return the folder
*/
public String getFolder() {
return folder == null ? "" : folder;
}
/**
* @return the name
*/
public String getName() {
return name == null ? "" : name;
}
/**
* @return the excludesPattern
*/
public String getExcludesPattern() {
return excludesPattern == null ? "" : excludesPattern;
}
/**
* @return the includesPattern
*/
public String getIncludesPattern() {
return includesPattern == null ? "" : includesPattern;
}
/**
* @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 class FilesetLabelProvider extends LabelProvider {
public Image getImage(Object element) {
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);
}
Image image = (Image) SWTResourceUtil.getImageTable().get(descriptor);
if (image == null) {
image = descriptor.createImage();
SWTResourceUtil.getImageTable().put(descriptor, image);
}
return image;
}
// if( element instanceof Path ) {
// ((Path)element).
//
// }
// if (resource instanceof IFile) {
// contentType = IDE.guessContentType((IFile)resource);
// }
// // @issue move IDE specific images
// ImageDescriptor image = PlatformUI.getWorkbench().getEditorRegistry()
// .getImageDescriptor(resource.getName(), contentType);
// if (image == null) {
// image = PlatformUI.getWorkbench().getSharedImages()
// .getImageDescriptor(ISharedImages.IMG_OBJ_FILE);
// }
// return image;
return null;
}
public String getText(Object element) {
if( element instanceof PathWrapper ) return ((PathWrapper)element).getLocalizedResourceName();
if( element instanceof Fileset ) return ((Fileset)element).getName();
return element == null ? "" : element.toString();//$NON-NLS-1$
}
}
public Image createIcon() {
return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FILE);
}
public void fillContextMenu(Shell shell, IMenuManager menu, Object selection) {
this.selection = selection;
if( selection instanceof ServerViewProvider ) {
menu.add(createFilter);
} else if( selection instanceof Fileset ) {
menu.add(editFilter);
menu.add(deleteFilter);
} else if( selection instanceof PathWrapper ) {
menu.add(editFileAction);
menu.add(deleteFileAction);
}
}
public ITreeContentProvider getContentProvider() {
return contentProvider;
}
public LabelProvider getLabelProvider() {
return labelProvider;
}
public Properties getProperties(Object selected) {
return null;
}
public String[] getPropertyKeys(Object selected) {
return null;
}
protected class FilesetDialog extends Dialog {
Fileset fileset;
private String name, dir, includes, excludes;
private Button browse;
private Text includesText, excludesText, folderText, nameText;
protected FilesetDialog(Shell parentShell, JBossServer server) {
super(parentShell);
this.fileset = new Fileset();
this.fileset.setFolder(server.getDeployDirectory());
}
protected FilesetDialog(Shell parentShell, Fileset fileset) {
super(parentShell);
this.fileset = (Fileset)fileset.clone();
}
protected Control createDialogArea(Composite parent) {
Composite sup = (Composite) super.createDialogArea(parent);
Composite main = new Composite(sup, SWT.NONE);
main.setLayout(new GridLayout(3, false));
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);
}
protected void fillArea(Composite main) {
Label nameLabel = new Label(main, SWT.NONE);
nameLabel.setText("Name");
nameText = new Text(main, SWT.BORDER);
nameText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, true, 2, 1));
Label folderLabel = new Label(main, SWT.NONE);
folderLabel.setText("Folder");
folderText = new Text(main, SWT.BORDER);
browse = new Button(main, SWT.PUSH);
browse.setText("Browse...");
Label includesLabel = new Label(main, SWT.NONE);
includesLabel.setText("Include Pattern");
includesText = new Text(main, SWT.BORDER);
includesText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, true, 2, 1));
Label excludeLabel= new Label(main, SWT.NONE);
excludeLabel.setText("Exclude Pattern");
excludesText = new Text(main, SWT.BORDER);
excludesText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, true, 2, 1));
}
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;
}
}
}
More information about the jboss-cvs-commits
mailing list