[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
Thu Nov 9 19:30:21 EST 2006


  User: rawb    
  Date: 06/11/09 19:30:21

  Added:       as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/providers  
                        ModuleViewProvider.java
                        InactiveExtensionViewProvider.java
  Log:
  Rewrote ui entirely
  
  Revision  Changes    Path
  1.1      date: 2006/11/10 00:30:21;  author: rawb;  state: Exp;jbosside/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/providers/ModuleViewProvider.java
  
  Index: ModuleViewProvider.java
  ===================================================================
  /*
   * JBoss, Home of Professional Open Source
   * Copyright 2006, JBoss Inc., and individual contributors as indicated
   * by the @authors tag. See the copyright.txt in the distribution for a
   * full listing of individual contributors.
   *
   * This is free software; you can redistribute it and/or modify it
   * under the terms of the GNU Lesser General Public License as
   * published by the Free Software Foundation; either version 2.1 of
   * the License, or (at your option) any later version.
   *
   * This software is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
   * License along with this software; if not, write to the Free
   * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
   * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
   */
  
  package org.jboss.ide.eclipse.as.ui.views.server.providers;
  
  import java.util.Properties;
  
  import org.eclipse.core.resources.IResourceDelta;
  import org.eclipse.jface.action.Action;
  import org.eclipse.jface.action.IMenuManager;
  import org.eclipse.jface.dialogs.MessageDialog;
  import org.eclipse.jface.viewers.ITreeContentProvider;
  import org.eclipse.jface.viewers.LabelProvider;
  import org.eclipse.jface.viewers.Viewer;
  import org.eclipse.swt.graphics.Image;
  import org.eclipse.swt.widgets.Shell;
  import org.eclipse.wst.server.core.IModule;
  import org.eclipse.wst.server.core.IServer;
  import org.eclipse.wst.server.core.IServerLifecycleListener;
  import org.eclipse.wst.server.core.IServerListener;
  import org.eclipse.wst.server.core.IServerWorkingCopy;
  import org.eclipse.wst.server.core.ServerCore;
  import org.eclipse.wst.server.core.ServerEvent;
  import org.eclipse.wst.server.core.internal.PublishServerJob;
  import org.eclipse.wst.server.ui.ServerUICore;
  import org.eclipse.wst.server.ui.internal.view.servers.ModuleServer;
  import org.jboss.ide.eclipse.as.core.JBossServerCore;
  import org.jboss.ide.eclipse.as.core.model.ModuleModel;
  import org.jboss.ide.eclipse.as.core.server.JBossServer;
  import org.jboss.ide.eclipse.as.ui.Messages;
  import org.jboss.ide.eclipse.as.ui.views.server.extensions.ServerViewProvider;
  import org.jboss.ide.eclipse.as.ui.views.server.extensions.SimplePropertiesViewExtension;
  
  public class ModuleViewProvider extends SimplePropertiesViewExtension {
  
  	private ModuleContentProvider contentProvider;
  	private ModuleLabelProvider labelProvider;
  	
  	private Action deleteModuleAction, publishModuleAction;
  	
  	private ModuleServer selection;
  	
  	private IServerLifecycleListener serverResourceListener;
  	private IServerListener serverListener;
  	
  	
  	public ModuleViewProvider() {
  		contentProvider = new ModuleContentProvider();
  		labelProvider = new ModuleLabelProvider();
  		createActions();
  		addListeners();
  	}
  
  	private void createActions() {
  		deleteModuleAction = new Action() {
  			public void run() {
  				if (MessageDialog.openConfirm(new Shell(), Messages.ServerDialogHeading, Messages.DeleteModuleConfirm)) {
  					try {
  						IServerWorkingCopy wc = selection.server.createWorkingCopy();
  						wc.modifyModules(null, selection.module , null);
  						wc.save(true, null);
  						// Re-publish in case the configuration change has not been published yet.
  						PublishServerJob publishJob = new PublishServerJob(selection.server, IServer.PUBLISH_INCREMENTAL, false);
  						publishJob.schedule();
  
  					} catch (Exception e) {
  						// ignore
  					}
  				}
  			}
  		};
  		deleteModuleAction.setText(Messages.DeleteModuleText);
  		deleteModuleAction.setDescription(Messages.DeleteModuleDescription);
  		
  		publishModuleAction = new Action() {
  			public void run() {
  				for( int i = 0; i < selection.module.length; i++ ) 
  					ModuleModel.getDefault().markModuleChanged(selection.module[i]);
  				PublishServerJob job = new PublishServerJob(selection.server);
  				job.schedule();
  			}
  		};
  		publishModuleAction.setText(Messages.PublishModuleText);
  		publishModuleAction.setDescription(Messages.PublishModuleDescription);
  	}
  	
  	public void fillContextMenu(Shell shell, IMenuManager menu, Object selection) {
  		if( selection instanceof ModuleServer) {
  			this.selection = (ModuleServer)selection;
  			menu.add(deleteModuleAction);
  			menu.add(publishModuleAction);
  		}
  	}
  
  	public ITreeContentProvider getContentProvider() {
  		return contentProvider;
  	}
  
  	public LabelProvider getLabelProvider() {
  		return labelProvider;
  	}
  
  	
  	class ModuleContentProvider implements ITreeContentProvider {
  
  		private IServer input;
  		
  		public Object[] getChildren(Object parentElement) {
  			
  			if (parentElement instanceof ModuleServer) {
  				ModuleServer ms = (ModuleServer) parentElement;
  				try {
  					IModule[] children = ms.server.getChildModules(ms.module, null);
  					int size = children.length;
  					ModuleServer[] ms2 = new ModuleServer[size];
  					for (int i = 0; i < size; i++) {
  						int size2 = ms.module.length;
  						IModule[] module = new IModule[size2 + 1];
  						System.arraycopy(ms.module, 0, module, 0, size2);
  						module[size2] = children[i];
  						ms2[i] = new ModuleServer(ms.server, module);
  					}
  					return ms2;
  				} catch (Exception e) {
  					return null;
  				}
  			}
  
  			
  			
  			if( parentElement instanceof ServerViewProvider && input != null ) {
  				IModule[] modules = input.getModules(); 
  				int size = modules.length;
  				ModuleServer[] ms = new ModuleServer[size];
  				for (int i = 0; i < size; i++) {
  					ms[i] = new ModuleServer(input, new IModule[] { modules[i] });
  				}
  				return ms;
  			}
  			return null;
  		}
  
  		public Object getParent(Object element) {
  			if( element instanceof ModuleServer ) {
  				return provider;
  			}
  			
  			return null;
  		}
  
  		public boolean hasChildren(Object element) {
  			return getChildren(element).length > 0 ? true : false; 
  		}
  
  		// unused
  		public Object[] getElements(Object inputElement) {
  			return null;
  		}
  
  		public void dispose() {
  			// TODO Auto-generated method stub
  			
  		}
  
  		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
  			input = (IServer)newInput;
  		}
  		
  	}
  	
  	class ModuleLabelProvider extends LabelProvider {
  		public String getText(Object obj) {
  			if( obj instanceof ModuleServer ) {
  				ModuleServer ms = (ModuleServer)obj;
  				int size = ms.module.length;
  				return ms.module[size - 1].getName();
  			}
  
  			return "garbage";
  		}
  		public Image getImage(Object obj) {
  			if( obj instanceof ModuleServer ) {
  				ModuleServer ms = (ModuleServer)obj;
  				int size = ms.module.length;
  				return ServerUICore.getLabelProvider().getImage(ms.module[ms.module.length - 1]);
  			}
  			return null;
  		}
  
  	}
  
  
  	public String[] getPropertyKeys(Object selected) {
  		return new String[] { Messages.ModulePropertyType, Messages.ModulePropertyProject };
  	}
  	
  	public Properties getProperties(Object selected) {
  		Properties props = new Properties();
  		if( selected != null && selected instanceof ModuleServer) {
  			IModule mod = ((ModuleServer)selected).module[0];
  			props.setProperty(Messages.ModulePropertyType, mod.getModuleType().getId());
  			props.setProperty(Messages.ModulePropertyProject, mod.getProject().getName());
  		}
  		return props;
  	}
  
  	private void addListeners() {
  		serverResourceListener = new IServerLifecycleListener() {
  			public void serverAdded(IServer server) {
  				if( JBossServerCore.getServer(server) != null ) 
  					server.addServerListener(serverListener);
  			}
  			public void serverChanged(IServer server) {
  			}
  			public void serverRemoved(IServer server) {
  				if( JBossServerCore.getServer(server) != null ) 
  					server.removeServerListener(serverListener);
  			}
  		};
  		ServerCore.addServerLifecycleListener(serverResourceListener);
  		
  		serverListener = new IServerListener() { 
  			public void serverChanged(ServerEvent event) {
  				int eventKind = event.getKind();
  				if ((eventKind & ServerEvent.MODULE_CHANGE) != 0) {
  					// module change event
  					if ((eventKind & ServerEvent.STATE_CHANGE) != 0 || (eventKind & ServerEvent.PUBLISH_STATE_CHANGE) != 0) {
  						refreshViewer();
  					} 
  				}
  			}
  		};
  		// add listeners to servers
  		JBossServer[] servers = JBossServerCore.getAllJBossServers();
  		if (servers != null) {
  			int size = servers.length;
  			for (int i = 0; i < size; i++) {
  				servers[i].getServer().addServerListener(serverListener);
  			}
  		}
  
  		
  	}
  }
  
  
  
  1.1      date: 2006/11/10 00:30:21;  author: rawb;  state: Exp;jbosside/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/providers/InactiveExtensionViewProvider.java
  
  Index: InactiveExtensionViewProvider.java
  ===================================================================
  /*
   * JBoss, Home of Professional Open Source
   * Copyright 2006, JBoss Inc., and individual contributors as indicated
   * by the @authors tag. See the copyright.txt in the distribution for a
   * full listing of individual contributors.
   *
   * This is free software; you can redistribute it and/or modify it
   * under the terms of the GNU Lesser General Public License as
   * published by the Free Software Foundation; either version 2.1 of
   * the License, or (at your option) any later version.
   *
   * This software is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
   * License along with this software; if not, write to the Free
   * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
   * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
   */
  package org.jboss.ide.eclipse.as.ui.views.server.providers;
  
  import java.util.ArrayList;
  
  import org.eclipse.jface.action.Action;
  import org.eclipse.jface.action.IMenuManager;
  import org.eclipse.jface.viewers.ITreeContentProvider;
  import org.eclipse.jface.viewers.LabelProvider;
  import org.eclipse.jface.viewers.Viewer;
  import org.eclipse.swt.graphics.Image;
  import org.eclipse.swt.widgets.Display;
  import org.eclipse.swt.widgets.Shell;
  import org.eclipse.ui.views.properties.IPropertySheetPage;
  import org.jboss.ide.eclipse.as.ui.JBossServerUIPlugin;
  import org.jboss.ide.eclipse.as.ui.Messages;
  import org.jboss.ide.eclipse.as.ui.views.server.JBossServerView;
  import org.jboss.ide.eclipse.as.ui.views.server.extensions.JBossServerViewExtension;
  import org.jboss.ide.eclipse.as.ui.views.server.extensions.ServerViewProvider;
  
  
  public class InactiveExtensionViewProvider extends JBossServerViewExtension {
  
  	private ITreeContentProvider contentProvider;
  	private LabelProvider labelProvider;
  	public InactiveExtensionViewProvider() {
  		contentProvider = new InactiveContentProvider();
  		labelProvider = new InactiveLabelProvider();
  	}
  	
  	
  	public class InactiveContentProvider implements ITreeContentProvider {
  
  		public Object[] getChildren(Object parentElement) {
  			if( parentElement == provider ) {
  				ServerViewProvider[] allExtensions = JBossServerUIPlugin.getDefault().getAllServerViewProviders();
  				ArrayList list = new ArrayList();
  				for( int i = 0; i < allExtensions.length; i++ ) {
  					if( !allExtensions[i].isEnabled()) {
  						list.add(allExtensions[i]);
  					}
  				}
  				ServerViewProvider[] retval = new ServerViewProvider[list.size()];
  				list.toArray(retval);
  				return retval;
  			}
  			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) {
  			// Unused
  			return null;
  		}
  
  		public void dispose() {
  		}
  
  		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
  			// Do nothing... don't care about which server is selected
  		}
  		
  	}
  	
  	public class InactiveLabelProvider extends LabelProvider {
  	    public Image getImage(Object element) {
  	    	if( element instanceof ServerViewProvider ) {
  	    		return ((ServerViewProvider)element).getImage();
  	    	}
  	        return null;
  	    }
  
  	    public String getText(Object element) {
  	    	if( element instanceof ServerViewProvider ) {
  	    		return ((ServerViewProvider)element).getName();
  	    	}
  	        return element == null ? "" : element.toString();
  	    }
  
  	}
  	
  	public void fillContextMenu(Shell shell, IMenuManager menu, Object selection) {
  		final Object selected = selection;
  		if( selection instanceof ServerViewProvider && selection != this.provider) {
  			Action act = new Action() {
  				public void run() {
  					Display.getDefault().asyncExec(new Runnable() {
  						public void run() {
  							if( selected instanceof ServerViewProvider) {
  								((ServerViewProvider)selected).setEnabled(true);
  								((ServerViewProvider)selected).getDelegate().getContentProvider().
  									inputChanged(JBossServerView.getDefault().getJBViewer(), null, JBossServerView.getDefault().getSelectedServer());
  								
  								try {
  									JBossServerView.getDefault().refreshJBTree(null);
  								} catch(Exception e) {
  								}
  							}
  						} 
  					} );
  				}
  			};
  			act.setText(Messages.InactiveCategoriesReEnable);
  			menu.add(act);
  		}
  	}
  
  	public ITreeContentProvider getContentProvider() {
  		return contentProvider;
  	}
  
  	public LabelProvider getLabelProvider() {
  		return labelProvider;
  	}
  
  	public IPropertySheetPage getPropertySheetPage() {
  		return null;
  	}
  
  }
  
  
  



More information about the jboss-cvs-commits mailing list