[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 Nov 15 17:26:57 EST 2006


  User: rawb    
  Date: 06/11/15 17:26:57

  Added:       as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/providers  
                        EventLogViewProvider.java PollingLabelProvider.java
  Log:
  Rebuilt the event log API and fixed some UI bugs preventing an efficient refresh of the tree. 
  
  Revision  Changes    Path
  1.1      date: 2006/11/15 22:26:57;  author: rawb;  state: Exp;jbosside/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/providers/EventLogViewProvider.java
  
  Index: EventLogViewProvider.java
  ===================================================================
  package org.jboss.ide.eclipse.as.ui.views.server.providers;
  
  import org.eclipse.core.runtime.CoreException;
  import org.eclipse.core.runtime.IConfigurationElement;
  import org.eclipse.core.runtime.IExtensionRegistry;
  import org.eclipse.core.runtime.Platform;
  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.Shell;
  import org.eclipse.ui.views.properties.IPropertySheetPage;
  import org.eclipse.wst.server.core.IServer;
  import org.jboss.ide.eclipse.as.core.model.EventLogModel;
  import org.jboss.ide.eclipse.as.core.model.EventLogModel.EventLogTreeItem;
  import org.jboss.ide.eclipse.as.core.model.EventLogModel.IEventLogListener;
  import org.jboss.ide.eclipse.as.ui.JBossServerUIPlugin;
  import org.jboss.ide.eclipse.as.ui.views.server.extensions.IEventLogLabelProvider;
  import org.jboss.ide.eclipse.as.ui.views.server.extensions.JBossServerViewExtension;
  import org.jboss.ide.eclipse.as.ui.views.server.extensions.ServerViewProvider;
  
  public class EventLogViewProvider extends JBossServerViewExtension implements IEventLogListener {
  	
  	private ITreeContentProvider contentProvider;
  	private LabelProvider labelProvider;
  	
  	private IEventLogLabelProvider[] labelProviderDelegates = null;
  
  	private IServer input;
  
  	public EventLogViewProvider() {
  		contentProvider = new EventLogContentProvider();
  		labelProvider = new EventLogLabelProvider();
  		EventLogModel.getDefault().addListener(this);
  	}
  	
  	
  	public class EventLogContentProvider implements ITreeContentProvider {
  		public Object[] getChildren(Object parentElement) {
  			if( parentElement instanceof ServerViewProvider && input != null ) {
  				return EventLogModel.getModel(input).getRoot().getChildren();
  			}
  			if( parentElement instanceof EventLogTreeItem ) {
  				return ((EventLogTreeItem)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) {
  			// Unused
  			return null;
  		}
  
  		public void dispose() {
  		}
  
  		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
  			input = (IServer)newInput;
  		}
  		
  	}
  	
  	public class EventLogLabelProvider extends LabelProvider {
  	    public Image getImage(Object element) {
  	    	if( labelProviderDelegates == null )
  	    		loadLabelProviderDelegates();
  	    	
  	    	if( element instanceof ServerViewProvider ) {
  	    		return ((ServerViewProvider)element).getImage();
  	    	}
  	    	
  	    	if( !(element instanceof EventLogTreeItem)) return null;
  	    	EventLogTreeItem item = (EventLogTreeItem)element;
  	    	
  	    	for( int i = 0; i < labelProviderDelegates.length; i++ ) {
  	    		if( labelProviderDelegates[i] != null 
  	    				&& labelProviderDelegates[i].supports(item.getType())) {
  	    			Image image = labelProviderDelegates[i].getImage(element);
  	    			if( image != null ) return image;
  	    		}
  	    	}
  	    	
  	        return null;
  	    }
  
  	    public String getText(Object element) {
  	    	if( labelProviderDelegates == null )
  	    		loadLabelProviderDelegates();
  
  	    	if( element instanceof ServerViewProvider ) {
  	    		return ((ServerViewProvider)element).getName();
  	    	}
  
  	    	if( !(element instanceof EventLogTreeItem)) return element.toString();
  	    	EventLogTreeItem item = (EventLogTreeItem)element;
  	    	
  	    	for( int i = 0; i < labelProviderDelegates.length; i++ ) {
  	    		if( labelProviderDelegates[i] != null 
  	    				&& labelProviderDelegates[i].supports(item.getType())) {
  	    			String text = labelProviderDelegates[i].getText((EventLogTreeItem)element);
  	    			if( text != null ) return text;
  	    		}
  	    	}
  
  	        return element == null ? "" : element.toString();
  	    }
  	    
  	    public void loadLabelProviderDelegates() {
  			IExtensionRegistry registry = Platform.getExtensionRegistry();
  			IConfigurationElement[] elements = registry.getConfigurationElementsFor(JBossServerUIPlugin.PLUGIN_ID, "EventLogLabelProvider");
  			labelProviderDelegates = new IEventLogLabelProvider[elements.length];
  			for( int i = 0; i < elements.length; i++ ) {
  				try {
  					labelProviderDelegates[i] = (IEventLogLabelProvider)elements[i].createExecutableExtension("class");
  				} catch( CoreException ce ) {}
  			}
  	    }
  	}
  	
  	public void fillContextMenu(Shell shell, IMenuManager menu, Object selection) {
  	}
  
  	public ITreeContentProvider getContentProvider() {
  		return contentProvider;
  	}
  
  	public LabelProvider getLabelProvider() {
  		return labelProvider;
  	}
  
  	public IPropertySheetPage getPropertySheetPage() {
  		return null;
  	}
  
  	/* (non-Javadoc)
  	 * @see org.jboss.ide.eclipse.as.core.model.EventLogModel.IEventLogListener#eventModelChanged(java.lang.String, org.jboss.ide.eclipse.as.core.model.EventLogModel.EventLogTreeItem)
  	 */
  	public void eventModelChanged(String serverId, EventLogTreeItem changed) {
  		if( input != null && serverId.equals(input.getId())) {
  			if(changed.getType().equals("jboss.event.root"))
  				refreshViewer();
  			else
  				refreshViewer(changed);
  		}
  	}
  
  }
  
  
  
  1.1      date: 2006/11/15 22:26:57;  author: rawb;  state: Exp;jbosside/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/providers/PollingLabelProvider.java
  
  Index: PollingLabelProvider.java
  ===================================================================
  /**
   * JBoss, a Division of Red Hat
   * Copyright 2006, Red Hat Middleware, LLC, 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.viewers.LabelProvider;
  import org.eclipse.swt.graphics.Image;
  import org.jboss.ide.eclipse.as.core.model.EventLogModel.EventLogTreeItem;
  import org.jboss.ide.eclipse.as.core.runtime.server.IServerStatePoller;
  import org.jboss.ide.eclipse.as.core.runtime.server.polling.PollThread;
  import org.jboss.ide.eclipse.as.core.runtime.server.polling.TwiddlePoller;
  import org.jboss.ide.eclipse.as.core.runtime.server.polling.PollThread.PollThreadEvent;
  import org.jboss.ide.eclipse.as.core.server.JBossServerBehavior;
  import org.jboss.ide.eclipse.as.ui.views.server.extensions.IEventLogLabelProvider;
  
  /**
   *
   * @author rob.stryker at jboss.com
   */
  public class PollingLabelProvider extends LabelProvider implements IEventLogLabelProvider {
  
  	private ArrayList supported;
  	public PollingLabelProvider() {
  		supported = new ArrayList();
  		supported.add(PollThread.SERVER_STARTING);
  		supported.add(PollThread.SERVER_STOPPING);
  		supported.add(PollThread.FAILURE);
  		supported.add(PollThread.SUCCESS);
  		supported.add(PollThread.POLL_THREAD_ABORTED);
  		supported.add(PollThread.POLL_THREAD_TIMEOUT);
  		
  		supported.add(TwiddlePoller.TYPE_TERMINATED);
  		supported.add(TwiddlePoller.TYPE_RESULT);
  		
  		supported.add(JBossServerBehavior.FORCE_SHUTDOWN_EVENT_KEY);
  	}
  
  	public boolean supports(String type) {
  		return supported.contains(type);
  	}
  
  	public Image getImage(EventLogTreeItem element) {
  		return null;
  	}
  
  	public String getText(EventLogTreeItem element) {
  		if( element.getType().equals(PollThread.SERVER_STARTING)) return "Starting the Server";
  		if( element.getType().equals(PollThread.SERVER_STOPPING)) return "Stopping the Server";
  		
  		if( element instanceof PollThreadEvent ) {
  			boolean expected = ((PollThreadEvent)element).getExpectedState();
  			String expectedString = expected == IServerStatePoller.SERVER_UP ? "startup" : "shutdown";
  			if( element.getType().equals(PollThread.POLL_THREAD_ABORTED)) return expectedString + " aborted";
  			if( element.getType().equals(PollThread.POLL_THREAD_TIMEOUT)) return expectedString + " timed out";
  			if( element.getType().equals(PollThread.SUCCESS)) return expectedString + " succeeded";
  			if( element.getType().equals(PollThread.FAILURE)) return expectedString + " failed";
  		}
  		
  		if( element.getType().equals(TwiddlePoller.TYPE_TERMINATED)) return "All processes have been terminated";
  		if( element.getType().equals(TwiddlePoller.TYPE_RESULT)) {
  			int state = ((Integer)element.getProperty(TwiddlePoller.STATUS)).intValue();
  			boolean expectedState = ((Boolean)element.getProperty(TwiddlePoller.EXPECTED_STATE)).booleanValue();
  			if( state == TwiddlePoller.STATE_STOPPED) 
  				return "The server is down.";
  			if( state == TwiddlePoller.STATE_STARTED)
  				return "The server is up.";
  			if( state == TwiddlePoller.STATE_TRANSITION) {
  				if( expectedState == IServerStatePoller.SERVER_UP ) 
  					return "The server is still starting";
  				return "The server is still stopping.";
  			}
  		}
  		
  		
  		if( element.getType().equals(JBossServerBehavior.FORCE_SHUTDOWN_EVENT_KEY)) 
  			return "The server was shutdown forcefully. All processes terminated.";
  		return null;
  	}
  }
  
  
  



More information about the jboss-cvs-commits mailing list