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

Robert Stryker rawblem at gmail.com
Tue Sep 19 14:54:32 EDT 2006


  User: rawb    
  Date: 06/09/19 14:54:32

  Modified:    as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/viewproviders 
                        DescriptorXPathViewProvider.java
  Log:
  Assorted changes to the preference page
  
  Revision  Changes    Path
  1.5       +191 -54   jbosside/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/viewproviders/DescriptorXPathViewProvider.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: DescriptorXPathViewProvider.java
  ===================================================================
  RCS file: /cvsroot/jboss/jbosside/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/viewproviders/DescriptorXPathViewProvider.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -b -r1.4 -r1.5
  --- DescriptorXPathViewProvider.java	26 Aug 2006 02:33:14 -0000	1.4
  +++ DescriptorXPathViewProvider.java	19 Sep 2006 18:54:32 -0000	1.5
  @@ -23,6 +23,9 @@
   
   import java.io.File;
   import java.lang.reflect.InvocationTargetException;
  +import java.util.ArrayList;
  +import java.util.Arrays;
  +import java.util.HashMap;
   
   import org.eclipse.core.runtime.IProgressMonitor;
   import org.eclipse.jface.action.Action;
  @@ -43,6 +46,8 @@
   import org.eclipse.jface.window.Window;
   import org.eclipse.swt.SWT;
   import org.eclipse.swt.custom.TreeEditor;
  +import org.eclipse.swt.events.SelectionEvent;
  +import org.eclipse.swt.events.SelectionListener;
   import org.eclipse.swt.graphics.Color;
   import org.eclipse.swt.graphics.GC;
   import org.eclipse.swt.graphics.Image;
  @@ -53,11 +58,13 @@
   import org.eclipse.swt.layout.FormLayout;
   import org.eclipse.swt.layout.RowLayout;
   import org.eclipse.swt.widgets.Button;
  +import org.eclipse.swt.widgets.Combo;
   import org.eclipse.swt.widgets.Composite;
   import org.eclipse.swt.widgets.Control;
   import org.eclipse.swt.widgets.Display;
   import org.eclipse.swt.widgets.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;
  @@ -93,8 +100,9 @@
   	private DescriptorXPathPropertySheetPage propertyPage;
   	
   	private static final String XPATH_PROPERTY = "_XPATH_PROPERTY_";
  -	private static final String XPATH_PROPERTY_LOADED = "_XPATH_PROPERTY_LOADED_";
  +	
   	private static String PREFERENCE_KEY = "_DESCRIPTOR_PREFERENCE_PAGE_DETAILS_SHOWN";
  +	
   	private static boolean COMPLEX = true;
   	private static boolean SIMPLE = false;
   	
  @@ -347,6 +355,9 @@
   		}
   
   		public XPathPropertyLabelProvider getLabelProvider() {
  +			if( labelProvider == null ) {
  +				labelProvider = new XPathPropertyLabelProvider();
  +			}
   			return labelProvider;
   		}
   		
  @@ -371,6 +382,30 @@
   			}
   		}
   
  +		public void setSimple(boolean simple) {
  +			boolean showSimple = showSimple();
  +
  +			if( showSimple != simple ) {
  +				JBossServerUIPlugin.getDefault().getPreferenceStore().setValue(PREFERENCE_KEY, simple == SIMPLE);
  +				JBossServerUIPlugin.getDefault().savePluginPreferences();
  +
  +				// if the properties page isn't opened, it'll throw nulls
  +				try {
  +					if( simple ) {
  +						getLabelProvider().setSimple(true);
  +						column3.setText("");
  +						column2.setText("Attribute Value");
  +						xpathTreeViewer.refresh();
  +					} else {
  +						getLabelProvider().setSimple(false);
  +						column3.setText("XPath / XML");
  +						column2.setText("Attribute Key / Value");
  +						xpathTreeViewer.refresh();
  +					}
  +				} catch ( Exception e ) {
  +				}
  +			}
  +		}
   		
   		public void dispose() {
   		}
  @@ -402,6 +437,7 @@
   							public void run() {
   								xpathTreeViewer.setInput(input);
   								xpathTreeViewer.expandToLevel(2);
  +								jbServer.getAttributeHelper().setServerPorts(root);
   							}
   						});
   					}
  @@ -435,16 +471,6 @@
   					}
   				}
   				
  -				if( element instanceof XPathTreeItem2) {
  -					XPathTreeItem2 element2 = (XPathTreeItem2)element;
  -					if( columnIndex == 0 ) 
  -						return "Match " + element2.getIndex();
  -					if( columnIndex == 1 ) {
  -						String x = element2.getText();
  -						return x;
  -					}
  -				}
  -				
   				if( element instanceof XPathPreferenceTreeItem) {
   					if( columnIndex == 0 ) return ((XPathPreferenceTreeItem)element).getName().toString();
   					if( columnIndex == 1 ) {
  @@ -665,9 +691,9 @@
   			
   			xpathTreeViewer = new TreeViewer(xpathTree);
   			xpathTreeViewer.setContentProvider(new XPathPropertyContentProvider());
  -			labelProvider = new XPathPropertyLabelProvider();
  +			labelProvider = getLabelProvider();
   			labelProvider.setSimple(showSimple());
  -			setViewContentAmount(showSimple());
  +			setSimple(showSimple());
   			xpathTreeViewer.setLabelProvider(labelProvider);
   			
   			final XPathTreeSelectionListener selListener = new XPathTreeSelectionListener();
  @@ -801,7 +827,7 @@
   				return kids;
   			}
   
  -			
  +			// re-creates it from scratch... hrmm
   			if( parentElement instanceof ServerViewProvider ) 
   				return jbServer.getAttributeHelper().getXPathPreferenceTree().getChildren2();
   			return new Object[0];
  @@ -823,23 +849,7 @@
   		}
   		public void ensureLoaded(SimpleXPathPreferenceTreeItem item) {
   			if( item instanceof XPathPreferenceTreeItem ) {
  -				
  -				String xpath = ((XPathPreferenceTreeItem)item).getXPath();
  -				String attribute = ((XPathPreferenceTreeItem)item).getAttributeName();
  -				XPathTreeItem[] items = new XPathTreeItem[0];
  -				if( attribute == null || attribute.equals("")) {
  -					items = jbServer.getDescriptorModel().getXPath(xpath);
  -				} else {
  -					items = jbServer.getDescriptorModel().getXPath(xpath, attribute);
  -				}
  -				
  -				if( item.getProperty(XPATH_PROPERTY_LOADED) != null ) {
  -					item.deleteChildren();
  -				}
  -				for( int i = 0; i < items.length; i++ ) {
  -					item.addChild(items[i]);
  -				}
  -				item.setProperty(XPATH_PROPERTY_LOADED, new Boolean(true));
  +				((XPathPreferenceTreeItem)item).ensureLoaded(jbServer);
   			}
   		}
   
  @@ -859,13 +869,145 @@
   	public class DescriptorPreferencePage extends ViewProviderPreferenceComposite {
   
   		private Button simple, complex;
  +		private Combo portsCategoryCombo;
  +		private Combo serversCombo;
  +		
  +		private JBossServer[] servers;
  +		
  +		private HashMap serverToCategoryList;
  +		private HashMap serverToDefaultPortCat;
  +		private HashMap serverToAttributeHelper;
   		
   		public DescriptorPreferencePage(Composite parent) {
   			super(parent, SWT.NONE);
  -			setLayout(new RowLayout(SWT.VERTICAL));
  +			setLayout(new FormLayout());
  +			
  +			serverToCategoryList = new HashMap();
  +			serverToDefaultPortCat = new HashMap();
  +			serverToAttributeHelper = new HashMap();
  +			
  +			
  +			Composite viewDetailsComp = new Composite(this, SWT.NONE);
  +			fillViewDetails(viewDetailsComp);
  +			
  +			Composite defaultPortComp = new Composite(this, SWT.BORDER);
  +			FormData portData = new FormData();
  +			portData.left = new FormAttachment(0,5);
  +			portData.top = new FormAttachment(viewDetailsComp,5);
  +			portData.right = new FormAttachment(50,-5);
  +			defaultPortComp.setLayoutData(portData);
  +			fillPortPreferences(defaultPortComp);
  +		}
  +		
  +		private ServerAttributeHelper getAttributeHelper(JBossServer server) {
  +			Object helper = serverToAttributeHelper.get(server);
  +			if( helper == null ) {
  +				helper = server.getAttributeHelper();
  +				serverToAttributeHelper.put(server, helper);
  +			}
  +			return (ServerAttributeHelper)helper;
  +		}
  +		
  +		protected void fillPortPreferences(Composite portComp) {
  +			portComp.setLayout(new RowLayout(SWT.VERTICAL));
  +			
  +			servers = JBossServerCore.getAllJBossServers();
  +			String[] serverNames = new String[servers.length];
  +			for( int i = 0; i < servers.length; i++ )
  +				serverNames[i] = servers[i].getServer().getName();
  +			
  +			portComp.setLayout(new RowLayout(SWT.VERTICAL));
  +			
  +			Label nameLabel = new Label(portComp, SWT.NONE);
  +			nameLabel.setText("Server Name: ");
   			
  -			simple = new Button(this, SWT.RADIO);
  -			complex = new Button(this, SWT.RADIO);
  +			serversCombo = new Combo(portComp, SWT.READ_ONLY);
  +			serversCombo.setItems(serverNames);
  +
  +			Label categoryLabel = new Label(portComp, SWT.NONE);
  +			categoryLabel.setText("Port Category: ");
  +			
  +			portsCategoryCombo = new Combo(portComp, SWT.READ_ONLY);
  +			
  +			
  +			serversCombo.addSelectionListener(new SelectionListener() {
  +
  +				public void widgetDefaultSelected(SelectionEvent e) {
  +				}
  +
  +				public void widgetSelected(SelectionEvent e) {
  +					serverComboChanged();
  +				} 
  +			});
  +			
  +			portsCategoryCombo.addSelectionListener(new SelectionListener() {
  +				public void widgetDefaultSelected(SelectionEvent e) {
  +				}
  +				public void widgetSelected(SelectionEvent e) {
  +					JBossServer server = getSelectedServer();
  +					if( server != null ) {
  +						int index = portsCategoryCombo.getSelectionIndex();
  +						String selectedCategory = portsCategoryCombo.getItem(index);
  +						serverToDefaultPortCat.put(server, selectedCategory);
  +					}
  +				} 
  +				
  +			} );
  +		}
  +		private void serverComboChanged() {
  +			JBossServer s = getSelectedServer();
  +			if( s != null ) {
  +				Object o = serverToCategoryList.get(s);
  +				ArrayList list;
  +				if( o == null ) {
  +					ServerAttributeHelper helper = getAttributeHelper(s);
  +					SimpleXPathPreferenceTreeItem tree = helper.getXPathPreferenceTree();
  +					SimpleTreeItem[] children = tree.getChildren2();
  +					String[] categoryNames = new String[children.length];
  +					for( int i = 0; i < children.length; i++ ) {
  +						categoryNames[i] = (String)children[i].getData();
  +					}
  +					list = new ArrayList();
  +					list.addAll(Arrays.asList(categoryNames));
  +					String portDir = helper.getDefaultPortCategoryName();
  +					serverToDefaultPortCat.put(s, portDir);
  +					serverToCategoryList.put(s, list);
  +				} else {
  +					list = (ArrayList)o;
  +				}
  +				portsCategoryCombo.setItems((String[]) list
  +						.toArray(new String[list.size()]));
  +				
  +				String portDir = (String)serverToDefaultPortCat.get(s);
  +				if( portDir != null ) {
  +					int index2 = portsCategoryCombo.indexOf(portDir);
  +					portsCategoryCombo.select(index2);
  +				}
  +			}
  +		}
  +		private JBossServer getSelectedServer() {
  +			int index = serversCombo.getSelectionIndex();
  +			String selected = serversCombo.getItem(index);
  +			if( selected == null ) return null;
  +			
  +			for( int i = 0; i < servers.length; i++ ) {
  +				if( servers[i].getServer().getName().equals(selected)) {
  +					return servers[i];
  +				}
  +			}
  +			return null;
  +		}
  +		
  +		protected void fillViewDetails(Composite c) {
  +			FormData vdcData = new FormData();
  +			vdcData.left = new FormAttachment(0,5);
  +			vdcData.top = new FormAttachment(0,5);
  +			c.setLayoutData(vdcData);
  +
  +			c.setLayout(new RowLayout(SWT.VERTICAL));
  +
  +			simple = new Button(c, SWT.RADIO);
  +			complex = new Button(c, SWT.RADIO);
   			
   			simple.setText("Show only xpath value in properties view.");
   			complex.setText("Show all details in properties view.");
  @@ -873,8 +1015,8 @@
   			boolean prefVal = JBossServerUIPlugin.getDefault().getPreferenceStore().getBoolean(PREFERENCE_KEY);
   			simple.setSelection(prefVal == SIMPLE);
   			complex.setSelection(prefVal == COMPLEX);
  -			
   		}
  +		
   		public boolean isValid() {
   			return true;
   		}
  @@ -883,29 +1025,24 @@
   		}
   		public boolean performOk() {
   			boolean simp = simple.getSelection() == true ? SIMPLE : COMPLEX;
  -			JBossServerUIPlugin.getDefault().getPreferenceStore().setValue(PREFERENCE_KEY, simp);
  -			JBossServerUIPlugin.getDefault().savePluginPreferences();
  -			setViewContentAmount(simp == SIMPLE);
  -			return true;
  -		}
  -		public void dispose() {
  -			super.dispose();
  +			propertyPage.setSimple(simp == SIMPLE);
  +			
  +			// now save default port categories
  +			ServerAttributeHelper helper;
  +			for( int i = 0; i < servers.length; i++ ) {
  +				helper = (ServerAttributeHelper)serverToAttributeHelper.get(servers[i]);
  +				String category = (String)serverToDefaultPortCat.get(servers[i]);
  +				if( category != null ) {
  +					helper.setDefaultPortCategoryName(category);
  +					helper.save();
   		}
   	}
   	
  -	public void setViewContentAmount(boolean simple) {
  -		if( propertyPage != null ) {
  -			if( simple ) {
  -				propertyPage.getLabelProvider().setSimple(true);
  -				propertyPage.column3.setText("");
  -				propertyPage.column2.setText("Attribute Value");
  -				propertyPage.xpathTreeViewer.refresh();
  -			} else {
  -				propertyPage.getLabelProvider().setSimple(false);
  -				propertyPage.column3.setText("XPath / XML");
  -				propertyPage.column2.setText("Attribute Key / Value");
  -				propertyPage.xpathTreeViewer.refresh();
  +			
  +			return true;
   			}
  +		public void dispose() {
  +			super.dispose();
   		}
   	}
   	
  
  
  



More information about the jboss-cvs-commits mailing list