[jboss-cvs] jbosside/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/preferencepages ...

Robert Stryker rawblem at gmail.com
Thu Jul 27 02:34:01 EDT 2006


  User: rawb    
  Date: 06/07/27 02:34:01

  Added:       as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/preferencepages   
                        ViewPreferencePage.java
                        JBossServersPreferencePage.java
                        ViewProviderPreferenceComposite.java
  Log:
  Implemented xpath editor in properties view. Other changes made to fascilitate this implementation (added to DescriptorModel, etc). Also fixed bugs, re-added classpath to server configuration so user can customize.
  
  Revision  Changes    Path
  1.1      date: 2006/07/27 06:34:01;  author: rawb;  state: Exp;jbosside/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/preferencepages/ViewPreferencePage.java
  
  Index: ViewPreferencePage.java
  ===================================================================
  package org.jboss.ide.eclipse.as.ui.preferencepages;
  
  import java.util.ArrayList;
  import java.util.HashMap;
  
  import org.eclipse.jface.preference.PreferencePage;
  import org.eclipse.jface.resource.ImageDescriptor;
  import org.eclipse.swt.SWT;
  import org.eclipse.swt.custom.ScrolledComposite;
  import org.eclipse.swt.custom.TableEditor;
  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.FormAttachment;
  import org.eclipse.swt.layout.FormData;
  import org.eclipse.swt.layout.FormLayout;
  import org.eclipse.swt.widgets.Button;
  import org.eclipse.swt.widgets.Composite;
  import org.eclipse.swt.widgets.Control;
  import org.eclipse.swt.widgets.Group;
  import org.eclipse.swt.widgets.Spinner;
  import org.eclipse.swt.widgets.Table;
  import org.eclipse.swt.widgets.TableColumn;
  import org.eclipse.swt.widgets.TableItem;
  import org.eclipse.ui.IWorkbench;
  import org.eclipse.ui.IWorkbenchPreferencePage;
  import org.eclipse.ui.part.PageBook;
  import org.jboss.ide.eclipse.as.core.util.ASDebug;
  import org.jboss.ide.eclipse.as.ui.JBossServerUIPlugin;
  import org.jboss.ide.eclipse.as.ui.JBossServerUIPlugin.ServerViewProvider;
  import org.jboss.ide.eclipse.as.ui.views.JBossServerView;
  
  public class ViewPreferencePage extends PreferencePage implements
  		IWorkbenchPreferencePage {
  
  	private static final String ENABLED = "_ENABLED_";
  	private static final String WEIGHT = "_WEIGHT_";
  	
  	private Table table;
  	private HashMap providerToGroup;
  	private ArrayList preferenceComposites;
  	private PageBook book;
  	ServerViewProvider[] providers;
  	
  	public ViewPreferencePage() {
  		providerToGroup = new HashMap();
  		preferenceComposites = new ArrayList();
  	}
  
  	public ViewPreferencePage(String title) {
  		super(title);
  	}
  
  	public ViewPreferencePage(String title, ImageDescriptor image) {
  		super(title, image);
  	}
  	
  	public boolean isValid() {
  		ViewProviderPreferenceComposite comp;
  		for( int i = 0; i < preferenceComposites.size(); i++ ) {
  			comp = (ViewProviderPreferenceComposite)preferenceComposites.get(i);
  			if( !comp.isValid()) return false;
  		}
  		return true;
  	}
  
      public boolean performOk() {
  
      	// first set whether they're enabled
      	TableItem[] items = table.getItems();
      	for( int i = 0; i < items.length; i++ ) {
      		ServerViewProvider provider = (ServerViewProvider)items[i].getData();
      		Boolean bigB = ((Boolean)items[i].getData(ENABLED));
      		if( bigB != null ) 
      			provider.setEnabled(bigB.booleanValue());
      		Integer weight  = ((Integer)items[i].getData(WEIGHT));
      		if( weight != null ) 
      			provider.setWeight(weight.intValue());
      	}
      	
      	// now let the composites save their preferences
  		ViewProviderPreferenceComposite comp;
  		boolean retval = true;
  		for( int i = 0; i < preferenceComposites.size(); i++ ) {
  			comp = (ViewProviderPreferenceComposite)preferenceComposites.get(i);
  			retval = retval && comp.performOk();
  		}
      	
  		// refresh the viewer
  		JBossServerView.getDefault().refreshJBTree(null);
      	
          return retval;
      }
  
  
  	protected Control createContents(Composite p) {
  		providerToGroup = new HashMap();
  		Composite c = new Composite(p, SWT.NONE);
  		c.setLayout(new FormLayout());
  		
  	    addEnablementComposite(c);
  	    addExtensionPreferencePages(c);
  	    addListeners();
  		
  		return c;
  	}
  	
  	protected void addListeners() {
  		table.addSelectionListener(new SelectionListener() {
  
  			public void widgetDefaultSelected(SelectionEvent e) {
  			}
  
  			public void widgetSelected(SelectionEvent e) {
  				try {
  					TableItem item = (table.getSelection())[0];
  					Object o = item.getData();
  					if( o != null && o instanceof ServerViewProvider) {
  						Group g = (Group)providerToGroup.get(((ServerViewProvider)o));
  						book.showPage(g);
  					}
  				} catch( Exception ex ) {
  					
  				}
  			} 
  			
  		});
  	}
  
  	protected void addEnablementComposite(Composite parent) {
  		        table = new Table(parent, SWT.BORDER);
  		        
  		        FormData tableData = new FormData();
  		        tableData.left = new FormAttachment(0,5);
  		        tableData.right = new FormAttachment(100, -5);
  		        tableData.top = new FormAttachment(0,5);
  		        tableData.bottom = new FormAttachment(40,0);
  		        table.setLayoutData(tableData);
  		        
  		        table.setHeaderVisible(true);
  		        table.setLinesVisible(false);
  		        TableColumn column0 = new TableColumn(table, SWT.NONE);
  		        column0.setText("Name");
  		        TableColumn column1 = new TableColumn(table, SWT.NONE);
  		        column1.setText("Enabled");
  		        TableColumn column2 = new TableColumn(table, SWT.NONE);
  		        column2.setText("Weight");
  		        TableColumn column3 = new TableColumn(table, SWT.NONE);
  		        column3.setText("Description");
  		        
  		        providers = JBossServerUIPlugin.getDefault().getAllServerViewProviders();
  		        int minWidth = 0;
  		        
  		        for (int i = 0; i < providers.length; i++) {
  		                final TableItem item = new TableItem(table, SWT.NONE);
  		                
  		                // keep the object in the data
  		                item.setData(providers[i]);
  		                
  		                
  		                item.setText(new String[] {providers[i].getName(), "", "", providers[i].getDescription()});
  		                item.setImage(providers[i].getImage());
  
                          final Button b = new Button(table, SWT.CHECK);
                          b.setSelection(providers[i].isEnabled());
                          b.pack();
                          TableEditor editor = new TableEditor(table);
                          Point size = b.computeSize(SWT.DEFAULT, SWT.DEFAULT);
                          editor.minimumWidth = size.x;
                          minWidth = Math.max(size.x, minWidth);
                          editor.minimumHeight = size.y;
                          editor.horizontalAlignment = SWT.CENTER;
                          editor.verticalAlignment = SWT.CENTER;
                          editor.setEditor(b, item , 1);
                          b.addSelectionListener(new SelectionListener() {
  							public void widgetDefaultSelected(SelectionEvent e) {
  							}
  
  							public void widgetSelected(SelectionEvent e) {
  								item.setData(ENABLED, new Boolean(b.getSelection()));
  							} 
                          });
                          
                          TableEditor editor2 = new TableEditor(table);
  
                          final Spinner s = new Spinner(table, SWT.NONE);
                          s.setMaximum(50);
                          s.setMinimum(0);
                          s.setIncrement(1);
                          s.setSelection(providers[i].getWeight());
                          Point size2 = s.computeSize(SWT.DEFAULT, SWT.DEFAULT);
                          editor2.minimumWidth = size2.x;
                          minWidth = Math.max(size2.x, minWidth);
                          editor2.minimumHeight = size2.y;
                          editor2.horizontalAlignment = SWT.RIGHT;
                          editor2.verticalAlignment = SWT.CENTER;
                          editor2.setEditor(s, item , 2);
                          
                          s.addModifyListener(new ModifyListener() {
  							public void modifyText(ModifyEvent e) {
  								item.setData(WEIGHT, new Integer(s.getSelection()));
  							} 
                          });
                          
                          
  		        }
  		        column0.pack();
  		        column1.pack();
  		        column1.setWidth(column1.getWidth() + minWidth);
  		        column2.pack();
  		        column2.setWidth(column2.getWidth() + minWidth);
  		        column3.pack();
  		        column3.setWidth(column3.getWidth() + minWidth);
  		        
  		
  	}
  	
  	protected void addExtensionPreferencePages(Composite parent) {
  		ScrolledComposite sc = new ScrolledComposite(parent, SWT.V_SCROLL | SWT.H_SCROLL);
  		FormData scData = new FormData();
  		scData.left = new FormAttachment(0,5);
  		scData.top = new FormAttachment(45, 0);
  		scData.right = new FormAttachment(100, -5);
  		scData.bottom = new FormAttachment(100, -5);
  		sc.setLayoutData(scData);
  		
  		
  		Composite sub = new Composite(sc, SWT.NONE);
  	    sc.setContent(sub);
  		sub.setLayout(new FillLayout());
  		
  		book = new PageBook(sub, SWT.NONE);
  		
  	    
  	    
  		ServerViewProvider[] providers = JBossServerUIPlugin.getDefault().getAllServerViewProviders();
  		
  		for( int i = 0; i < providers.length; i++ ) {
  			Group g = new Group(book, SWT.NONE);
  			g.setText(providers[i].getName() + " Preferences");
  			g.setLayout(new FillLayout());
  			ViewProviderPreferenceComposite c = 
  				providers[i].getDelegate().createPreferenceComposite(g, SWT.NONE);
  			if( c != null ) preferenceComposites.add(c);
  			providerToGroup.put(providers[i], g);
  		}
  		
  		
  		
  		// force a layout
  		sub.pack();
  		//sub.layout();
  		
          int locY = sub.getLocation().y;
          int locX = sub.getLocation().x;
          int sY = sub.getSize().y;
          int sX = sub.getSize().x;
  
  		
  	    sc.setExpandHorizontal(true);
  	    sc.setExpandVertical(true);
  	    sc.setMinHeight(locY + sY);
  	    sc.setMinWidth(locX + sX);
  	}
  
  	protected class EnablementComposite extends Composite {
  		private ServerViewProvider myProvider;
  		public EnablementComposite(Composite parent, ServerViewProvider provider ) {
  			super(parent, SWT.NONE);
  			myProvider = provider;
  			
  			setLayout(new FormLayout());
  			Button enabled = new Button(this, SWT.CHECK);
  			enabled.setText("Enabled");
  			enabled.setSelection(provider.isEnabled());
  			
  			
  			
  		}
  		
  	}
  	
  	
  	
  	public void init(IWorkbench workbench) {
  	}
  	
  	
  	
  	
  
  }
  
  
  
  1.1      date: 2006/07/27 06:34:01;  author: rawb;  state: Exp;jbosside/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/preferencepages/JBossServersPreferencePage.java
  
  Index: JBossServersPreferencePage.java
  ===================================================================
  package org.jboss.ide.eclipse.as.ui.preferencepages;
  
  import java.io.File;
  import java.lang.reflect.InvocationTargetException;
  import java.util.ArrayList;
  import java.util.Collection;
  import java.util.HashMap;
  import java.util.Iterator;
  
  import org.dom4j.Node;
  import org.eclipse.core.runtime.CoreException;
  import org.eclipse.core.runtime.IProgressMonitor;
  import org.eclipse.core.runtime.NullProgressMonitor;
  import org.eclipse.jface.action.Action;
  import org.eclipse.jface.action.IMenuListener;
  import org.eclipse.jface.action.IMenuManager;
  import org.eclipse.jface.action.MenuManager;
  import org.eclipse.jface.dialogs.ProgressMonitorDialog;
  import org.eclipse.jface.operation.IRunnableWithProgress;
  import org.eclipse.jface.preference.PreferencePage;
  import org.eclipse.jface.resource.ImageDescriptor;
  import org.eclipse.jface.viewers.ILabelProviderListener;
  import org.eclipse.jface.viewers.ISelection;
  import org.eclipse.jface.viewers.ISelectionChangedListener;
  import org.eclipse.jface.viewers.IStructuredContentProvider;
  import org.eclipse.jface.viewers.IStructuredSelection;
  import org.eclipse.jface.viewers.ITableLabelProvider;
  import org.eclipse.jface.viewers.ITreeContentProvider;
  import org.eclipse.jface.viewers.SelectionChangedEvent;
  import org.eclipse.jface.viewers.TableViewer;
  import org.eclipse.jface.viewers.TreeViewer;
  import org.eclipse.jface.viewers.Viewer;
  import org.eclipse.jface.window.Window;
  import org.eclipse.swt.SWT;
  import org.eclipse.swt.custom.TreeEditor;
  import org.eclipse.swt.events.ModifyEvent;
  import org.eclipse.swt.events.ModifyListener;
  import org.eclipse.swt.graphics.Color;
  import org.eclipse.swt.graphics.GC;
  import org.eclipse.swt.graphics.Image;
  import org.eclipse.swt.graphics.Point;
  import org.eclipse.swt.graphics.Rectangle;
  import org.eclipse.swt.layout.FormAttachment;
  import org.eclipse.swt.layout.FormData;
  import org.eclipse.swt.layout.FormLayout;
  import org.eclipse.swt.widgets.Composite;
  import org.eclipse.swt.widgets.Control;
  import org.eclipse.swt.widgets.Display;
  import org.eclipse.swt.widgets.Event;
  import org.eclipse.swt.widgets.Group;
  import org.eclipse.swt.widgets.Label;
  import org.eclipse.swt.widgets.Listener;
  import org.eclipse.swt.widgets.Menu;
  import org.eclipse.swt.widgets.MessageBox;
  import org.eclipse.swt.widgets.Shell;
  import org.eclipse.swt.widgets.Spinner;
  import org.eclipse.swt.widgets.Table;
  import org.eclipse.swt.widgets.Text;
  import org.eclipse.swt.widgets.Tree;
  import org.eclipse.swt.widgets.TreeColumn;
  import org.eclipse.swt.widgets.TreeItem;
  import org.eclipse.ui.IWorkbench;
  import org.eclipse.ui.IWorkbenchPreferencePage;
  import org.eclipse.wst.server.core.IServerWorkingCopy;
  import org.eclipse.wst.server.core.internal.ServerType;
  import org.eclipse.wst.server.ui.ServerUICore;
  import org.jboss.ide.eclipse.as.core.JBossServerCore;
  import org.jboss.ide.eclipse.as.core.model.SimpleTreeItem;
  import org.jboss.ide.eclipse.as.core.model.DescriptorModel.ServerDescriptorModel.XPathTreeItem;
  import org.jboss.ide.eclipse.as.core.model.DescriptorModel.ServerDescriptorModel.XPathTreeItem2;
  import org.jboss.ide.eclipse.as.core.server.JBossServer;
  import org.jboss.ide.eclipse.as.core.server.ServerAttributeHelper;
  import org.jboss.ide.eclipse.as.core.server.ServerAttributeHelper.SimpleXPathPreferenceTreeItem;
  import org.jboss.ide.eclipse.as.core.server.ServerAttributeHelper.XPathPreferenceTreeItem;
  import org.jboss.ide.eclipse.as.ui.dialogs.XPathDialogs.XPathCategoryDialog;
  import org.jboss.ide.eclipse.as.ui.dialogs.XPathDialogs.XPathDialog;
  
  
  public class JBossServersPreferencePage extends PreferencePage implements
  		IWorkbenchPreferencePage {
  
  	public JBossServersPreferencePage() {
  		super();
  	}
  
  	public JBossServersPreferencePage(String title) {
  		super(title);
  	}
  
  	public JBossServersPreferencePage(String title, ImageDescriptor image) {
  		super(title, image);
  	}
  
  	protected Control createContents(Composite parent) {
  		Composite main = new Composite(parent, SWT.BORDER);
  		main.setLayout(new FormLayout());
  		
  		createServerViewer(main);
  		createTimeoutGroup(main);
  		addListeners();
  		
  		
  		// minimum width enforcer
  		Label l = new Label(main, SWT.NONE);
  		FormData lData = new FormData();
  		lData.left = new FormAttachment(0,0);
  		lData.right = new FormAttachment(0,600);
  		lData.bottom = new FormAttachment(100,0);
  		lData.top = new FormAttachment(100,0);
  		l.setLayoutData(lData);
  		main.layout();
  
  		
  		return main;
  	}
  	
  	private JBossServer currentServer;
  
  	private Group timeoutGroup;
  	private Table serverTable;
  	private TableViewer serverTableViewer;
  	private Spinner stopSpinner, startSpinner;
  	
  	private HashMap workingCoppies;	
  	
  	private Action newXPathCategoryAction, newXPathAction, deleteXPathCategoryAction, 
  					deleteXPathAction, editXPathAction;
  		
  	// where the page fold is
  	int pageColumn = 55;
  	
  	
  	protected void createServerViewer(Composite main) {
  		
  		workingCoppies = new HashMap();
  		
  		serverTable = new Table(main, SWT.BORDER);
  		FormData lData = new FormData();
  		lData.left = new FormAttachment(0,5);
  		lData.right = new FormAttachment(pageColumn-2,0);
  		lData.top = new FormAttachment(0,5);
  		lData.bottom = new FormAttachment(0,80);
  		serverTable.setLayoutData(lData);
  		
  		serverTableViewer = new TableViewer(serverTable);
  		serverTableViewer.setContentProvider(new IStructuredContentProvider() {
  
  			public Object[] getElements(Object inputElement) {
  				return JBossServerCore.getAllJBossServers();
  			}
  
  			public void dispose() {
  			}
  
  			public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
  			}
  		});
  		serverTableViewer.setLabelProvider(new ITableLabelProvider() {
  
  			public Image getColumnImage(Object element, int columnIndex) {
  				if( element instanceof JBossServer ) {
  					return ServerUICore.getLabelProvider().getImage(((JBossServer)element).getServer());
  				}
  				return null;
  			}
  
  			public String getColumnText(Object element, int columnIndex) {
  				if( element instanceof JBossServer ) return ((JBossServer)element).getServer().getName();
  				return element.toString();
  			}
  
  			public void addListener(ILabelProviderListener listener) {
  			}
  			public void dispose() {
  			}
  			public boolean isLabelProperty(Object element, String property) {
  				return false;
  			}
  			public void removeListener(ILabelProviderListener listener) {
  			}
  		});
  		
  		serverTableViewer.setInput("");
  		
  	}
  
  	protected void createTimeoutGroup(Composite main) {
  		timeoutGroup = new Group(main, SWT.NONE);
  		timeoutGroup.setText("Server Timeouts");
  		FormData groupData = new FormData();
  		groupData.right = new FormAttachment(100, -5);
  		groupData.left = new FormAttachment(pageColumn+2, 0);
  		groupData.top = new FormAttachment(0,5);
  		timeoutGroup.setLayoutData(groupData);
  		
  		timeoutGroup.setLayout(new FormLayout());
  		
  		// add two textboxes, two labels
  		Label startTimeoutLabel, stopTimeoutLabel;
  		
  		startTimeoutLabel = new Label(timeoutGroup, SWT.NONE);
  		stopTimeoutLabel = new Label(timeoutGroup, SWT.NONE);
  		
  		stopSpinner = new Spinner(timeoutGroup, SWT.BORDER);
  		startSpinner = new Spinner(timeoutGroup, SWT.BORDER);
  
  		FormData startTD = new FormData();
  		startTD.left = new FormAttachment(0,5);
  		startTD.top = new FormAttachment(0,5);
  		startTimeoutLabel.setLayoutData(startTD);
  		startTimeoutLabel.setText("Start Timeout");
  		
  		
  		FormData stopTD = new FormData();
  		stopTD.left = new FormAttachment(0,5);
  		stopTD.top = new FormAttachment(startSpinner,4);
  		stopTimeoutLabel.setLayoutData(stopTD);
  		stopTimeoutLabel.setText("Stop Timeout");
  		
  		timeoutGroup.layout();
  		int startWidth = startTimeoutLabel.getSize().x;
  		int stopWidth = stopTimeoutLabel.getSize().x;
  		
  		Label widest = startWidth > stopWidth ? startTimeoutLabel : stopTimeoutLabel;
  		
  		FormData startD = new FormData();
  		startD.left = new FormAttachment(0,widest.getSize().x + widest.getLocation().x + 5);
  		startD.right = new FormAttachment(100, -5);
  		startD.top = new FormAttachment(0,5);
  		startSpinner.setLayoutData(startD);
  		
  		FormData stopD = new FormData();
  		stopD.left = new FormAttachment(0,widest.getSize().x + widest.getLocation().x + 5);
  		stopD.right = new FormAttachment(100, -5);
  		stopD.top = new FormAttachment(startSpinner,5);
  		stopSpinner.setLayoutData(stopD);
  		
  		
  		stopSpinner.setMinimum(0);
  		startSpinner.setMinimum(0);
  		stopSpinner.setIncrement(1000);
  		startSpinner.setIncrement(1000);
  		
  		
  	}
  	
  		private void addListeners() {
  		serverTableViewer.addSelectionChangedListener(new ISelectionChangedListener() {
  			public void selectionChanged(SelectionChangedEvent event) {
  				IStructuredSelection sel = (IStructuredSelection)serverTableViewer.getSelection();
  				serverSelected(sel.getFirstElement() == null ? null : (JBossServer)sel.getFirstElement());
  			}
  		});
  		
  		startSpinner.addModifyListener(new ModifyListener() {
  			public void modifyText(ModifyEvent e) {
  				getSelectedWC().setStartTimeout(startSpinner.getSelection());
  			} 
  		});
  		stopSpinner.addModifyListener(new ModifyListener() {
  			public void modifyText(ModifyEvent e) {
  				getSelectedWC().setStopTimeout(stopSpinner.getSelection());
  			} 
  		});
  		
  				
  	}
  	
  	private void createActions() { }
  		/*
  		 * newXPathCategoryAction, newXPathAction, deleteXPathCategoryAction, 
  					deleteXPathAction, editXPathCategoryAction, editXPathAction;
  		 
  }
  	
  	private void addViewerMenus() {
  		MenuManager menuManager = new MenuManager("#PopupMenu"); 
  		menuManager.setRemoveAllWhenShown(true);
  		final Shell shell = xpathTree.getShell();
  		menuManager.addMenuListener(new IMenuListener() {
  			public void menuAboutToShow(IMenuManager mgr) {
  				xpathTreeMenuAboutToShow(shell, mgr);
  			}
  		});
  		Menu menu = menuManager.createContextMenu(xpathTree);
  		xpathTree.setMenu(menu);
  	}
  	
  	private void xpathTreeMenuAboutToShow(Shell shell, IMenuManager menu) {
  		menu.add(newXPathCategoryAction);
  		menu.add(deleteXPathCategoryAction);
  		menu.add(newXPathAction);
  		menu.add(editXPathAction);
  	}
  	*/
  	
  	private void serverSelected(JBossServer server) {
  		currentServer = server;
  		ServerAttributeHelper wcHelper = getWCHelper(server);
  		
  		/* Handle spinners */
  		startSpinner.setMaximum(((ServerType)server.getServer().getServerType()).getStartTimeout());
  		stopSpinner.setMaximum(((ServerType)server.getServer().getServerType()).getStopTimeout());
  		startSpinner.setSelection(wcHelper.getStartTimeout());
  		stopSpinner.setSelection(wcHelper.getStopTimeout());
  		
  
  	}
  	
  	
  	private ServerAttributeHelper getWCHelper(JBossServer server) {
  		if( workingCoppies.get(server) == null ) {
  			ServerAttributeHelper ret = server.getAttributeHelper();
  			workingCoppies.put(server, ret);
  			return ret;
  		}
  		
  		return (ServerAttributeHelper)workingCoppies.get(server);
  	}
  	
  	private ServerAttributeHelper getSelectedWC() {
  		IStructuredSelection sel = (IStructuredSelection)serverTableViewer.getSelection();
  		if( sel != null && sel.getFirstElement() != null ) {
  			return getWCHelper((JBossServer)sel.getFirstElement());
  		}
  		return null;
  	}
  	
  	public void init(IWorkbench workbench) {
  	}
  	
  	public Object getFirstSelected(Viewer viewer) {
  		ISelection sel = viewer.getSelection();
  		if( sel instanceof IStructuredSelection) {
  			Object o = ((IStructuredSelection)sel).getFirstElement();
  			return o;
  		}
  		return null;
  	}
  	
  	
      public boolean performOk() {
      	super.performOk();
      	saveDirtyWorkingCoppies();
      	return true;
      }
      
      /* Saves the actual ServerWorkingCopy changes into the IServer it relates to. */
  	private void saveDirtyWorkingCoppies() {
      	Collection c = workingCoppies.values();
      	Iterator i = c.iterator();
      	Object o;
      	IServerWorkingCopy copy;
      	while(i.hasNext()) {
      		o = i.next();
      		if( o instanceof ServerAttributeHelper) {
      			copy = ((ServerAttributeHelper)o).getServer();
      			if( copy.isDirty()) {
      				try {
      					copy.save(true, new NullProgressMonitor());
      				} catch( CoreException ce) {
      					ce.printStackTrace();
      				}
      			}
      		}
      	}
  	}
  	
      public boolean performCancel() {
      	super.performCancel();
      	// get rid of dirty working coppies (no action needed)
      	
          return true;
      }
  }
  
  
  
  1.1      date: 2006/07/27 06:34:01;  author: rawb;  state: Exp;jbosside/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/preferencepages/ViewProviderPreferenceComposite.java
  
  Index: ViewProviderPreferenceComposite.java
  ===================================================================
  package org.jboss.ide.eclipse.as.ui.preferencepages;
  
  import org.eclipse.swt.widgets.Composite;
  
  public abstract class ViewProviderPreferenceComposite extends Composite {
  	public ViewProviderPreferenceComposite(Composite parent, int style) {
  		super(parent, style);
  	}
  	public abstract boolean isValid();
  	public abstract boolean performOk();
  	public abstract boolean performCancel();
  }
  
  
  



More information about the jboss-cvs-commits mailing list