[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 16 14:52:23 EST 2006


  User: rawb    
  Date: 06/11/16 14:52:23

  Modified:    as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/providers  
                        EventLogViewProvider.java PollingLabelProvider.java
  Log:
  Changed some of the property keys in the core.
  Refinement of extension point to add event label providers and properties to the event log in the ui plugin.
  
  Revision  Changes    Path
  1.2       +65 -7     jbosside/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/providers/EventLogViewProvider.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: EventLogViewProvider.java
  ===================================================================
  RCS file: /cvsroot/jboss/jbosside/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/providers/EventLogViewProvider.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- EventLogViewProvider.java	15 Nov 2006 22:26:57 -0000	1.1
  +++ EventLogViewProvider.java	16 Nov 2006 19:52:23 -0000	1.2
  @@ -1,9 +1,33 @@
  +/**
  + * 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.Properties;
  +
   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.Action;
   import org.eclipse.jface.action.IMenuManager;
   import org.eclipse.jface.viewers.ITreeContentProvider;
   import org.eclipse.jface.viewers.LabelProvider;
  @@ -18,23 +42,42 @@
   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.PropertySheetFactory;
   import org.jboss.ide.eclipse.as.ui.views.server.extensions.ServerViewProvider;
  +import org.jboss.ide.eclipse.as.ui.views.server.extensions.PropertySheetFactory.ISimplePropertiesHolder;
   
  -public class EventLogViewProvider extends JBossServerViewExtension implements IEventLogListener {
  +public class EventLogViewProvider extends JBossServerViewExtension implements IEventLogListener, ISimplePropertiesHolder {
   	
   	private ITreeContentProvider contentProvider;
   	private LabelProvider labelProvider;
   	
   	private IEventLogLabelProvider[] labelProviderDelegates = null;
   
  +	private IPropertySheetPage propertyPage = null;
  +
   	private IServer input;
  +	private Action clearLogAction;
  +	
   
   	public EventLogViewProvider() {
   		contentProvider = new EventLogContentProvider();
   		labelProvider = new EventLogLabelProvider();
   		EventLogModel.getDefault().addListener(this);
  +		createActions();
   	}
   	
  +	protected void createActions() {
  +		clearLogAction = new Action() {
  +			public void run() {
  +				try {
  +					EventLogModel.getModel(input).clearEvents();
  +					refreshViewer();
  +				} catch( Exception e) {}
  +			}
  +		};
  +		clearLogAction.setText("Clear Event Log");
  +		//clearLogAction.setImageDescriptor(newImage)
  +	}
   	
   	public class EventLogContentProvider implements ITreeContentProvider {
   		public Object[] getChildren(Object parentElement) {
  @@ -84,7 +127,7 @@
   	    	for( int i = 0; i < labelProviderDelegates.length; i++ ) {
   	    		if( labelProviderDelegates[i] != null 
   	    				&& labelProviderDelegates[i].supports(item.getType())) {
  -	    			Image image = labelProviderDelegates[i].getImage(element);
  +	    			Image image = labelProviderDelegates[i].getImage((EventLogTreeItem)element);
   	    			if( image != null ) return image;
   	    		}
   	    	}
  @@ -127,6 +170,7 @@
   	}
   	
   	public void fillContextMenu(Shell shell, IMenuManager menu, Object selection) {
  +		menu.add(clearLogAction);
   	}
   
   	public ITreeContentProvider getContentProvider() {
  @@ -138,19 +182,33 @@
   	}
   
   	public IPropertySheetPage getPropertySheetPage() {
  -		return null;
  +		if( propertyPage == null )
  +			propertyPage = PropertySheetFactory.createSimplePropertiesSheet(this);
  +		return propertyPage;
   	}
   
  -	/* (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"))
  +			if(changed.getType().equals(EventLogModel.JBOSS_EVENT_ROOT_TYPE))
   				refreshViewer();
   			else
   				refreshViewer(changed);
   		}
   	}
   
  +	public Properties getProperties(Object selected) {
  +    	if( !(selected instanceof EventLogTreeItem)) return new Properties();
  +    	EventLogTreeItem item = (EventLogTreeItem)selected;
  +    	
  +    	for( int i = 0; i < labelProviderDelegates.length; i++ ) {
  +    		if( labelProviderDelegates[i] != null 
  +    				&& labelProviderDelegates[i].supports(item.getType())) {
  +    			Properties props = labelProviderDelegates[i].getProperties((EventLogTreeItem)selected);
  +    			if( props != null ) return props;
  +    		}
  +    	}
  +    	return new Properties();
  +	}
  +
   }
  
  
  
  1.2       +127 -1    jbosside/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/providers/PollingLabelProvider.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: PollingLabelProvider.java
  ===================================================================
  RCS file: /cvsroot/jboss/jbosside/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/providers/PollingLabelProvider.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- PollingLabelProvider.java	15 Nov 2006 22:26:57 -0000	1.1
  +++ PollingLabelProvider.java	16 Nov 2006 19:52:23 -0000	1.2
  @@ -22,9 +22,18 @@
   package org.jboss.ide.eclipse.as.ui.views.server.providers;
   
   import java.util.ArrayList;
  +import java.util.Date;
  +import java.util.HashMap;
  +import java.util.Iterator;
  +import java.util.Properties;
   
  +import org.eclipse.debug.core.ILaunchManager;
   import org.eclipse.jface.viewers.LabelProvider;
   import org.eclipse.swt.graphics.Image;
  +import org.eclipse.ui.ISharedImages;
  +import org.eclipse.ui.PlatformUI;
  +import org.eclipse.wst.server.core.IServer;
  +import org.eclipse.wst.server.ui.internal.provisional.UIDecoratorManager;
   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;
  @@ -40,7 +49,13 @@
   public class PollingLabelProvider extends LabelProvider implements IEventLogLabelProvider {
   
   	private ArrayList supported;
  +	private HashMap propertyToMessageMap;
   	public PollingLabelProvider() {
  +		addSupportedTypes();
  +		loadPropertyMap();
  +	}
  +	
  +	protected void addSupportedTypes() {
   		supported = new ArrayList();
   		supported.add(PollThread.SERVER_STARTING);
   		supported.add(PollThread.SERVER_STOPPING);
  @@ -60,6 +75,41 @@
   	}
   
   	public Image getImage(EventLogTreeItem element) {
  +		if( element.getType().equals(PollThread.SERVER_STARTING)) return getStartingImage();
  +		if( element.getType().equals(PollThread.SERVER_STOPPING)) return getStoppingImage();
  +		
  +		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 getErrorImage();
  +			if( element.getType().equals(PollThread.POLL_THREAD_TIMEOUT)) return getErrorImage();
  +			if( element.getType().equals(PollThread.SUCCESS)) {
  +				if( expected == IServerStatePoller.SERVER_UP)
  +					return getStartedImage();
  +				return getStoppedImage();
  +			}
  +			if( element.getType().equals(PollThread.FAILURE)) 
  +				return getErrorImage();
  +		}
  +		
  +		if( element.getType().equals(TwiddlePoller.TYPE_TERMINATED)) return getErrorImage();
  +		if( element.getType().equals(TwiddlePoller.TYPE_RESULT)) {
  +			int state = ((Integer)element.getProperty(TwiddlePoller.STATUS)).intValue();
  +			boolean expectedState = ((Boolean)element.getProperty(PollThread.EXPECTED_STATE)).booleanValue();
  +			if( state == TwiddlePoller.STATE_STOPPED) 
  +				return getStoppedImage();
  +			if( state == TwiddlePoller.STATE_STARTED)
  +				return getStartedImage();
  +			if( state == TwiddlePoller.STATE_TRANSITION) {
  +				if( expectedState == IServerStatePoller.SERVER_UP ) 
  +					return getStartingImage();
  +				return getStoppingImage();
  +			}
  +		}
  +		
  +		
  +		if( element.getType().equals(JBossServerBehavior.FORCE_SHUTDOWN_EVENT_KEY)) 
  +			return getErrorImage();
   		return null;
   	}
   
  @@ -79,7 +129,7 @@
   		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();
  +			boolean expectedState = ((Boolean)element.getProperty(PollThread.EXPECTED_STATE)).booleanValue();
   			if( state == TwiddlePoller.STATE_STOPPED) 
   				return "The server is down.";
   			if( state == TwiddlePoller.STATE_STARTED)
  @@ -96,4 +146,80 @@
   			return "The server was shutdown forcefully. All processes terminated.";
   		return null;
   	}
  +	
  +	protected Image getStateImage(int state) {
  +		return UIDecoratorManager.getUIDecorator(null).getStateImage(state, ILaunchManager.RUN_MODE, 0);
  +	}
  +
  +	protected Image getErrorImage() {
  +		return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJS_WARN_TSK);
  +	}
  +	public Image getStartedImage() {
  +		return getStateImage(IServer.STATE_STARTED);
  +	}
  +	public Image getStartingImage() {
  +		return getStateImage(IServer.STATE_STARTING);
  +	}
  +	public Image getStoppingImage() {
  +		return getStateImage(IServer.STATE_STOPPING);
  +	}
  +	public Image getStoppedImage() {
  +		return getStateImage(IServer.STATE_STOPPED);
  +	}
  +
  +
  +	
  +	/*
  +	 * Property Stuff
  +	 */
  +	protected void loadPropertyMap() {
  +		// property names and their readable forms
  +		propertyToMessageMap = new HashMap();
  +		propertyToMessageMap.put(EventLogTreeItem.DATE, "Time");
  +		propertyToMessageMap.put(TwiddlePoller.STATUS, "Status");
  +		propertyToMessageMap.put(PollThread.EXPECTED_STATE, "Expected State");
  +		
  +		// now values and their readable forms
  +		propertyToMessageMap.put(TwiddlePoller.STATUS + "::" + 0, "Server is Down");
  +		propertyToMessageMap.put(TwiddlePoller.STATUS + "::" + 1, "Server is Up");
  +		propertyToMessageMap.put(TwiddlePoller.STATUS + "::" + -1, "Server is in transition");
  +		propertyToMessageMap.put(PollThread.EXPECTED_STATE + "::" + "true", "Up");
  +		propertyToMessageMap.put(PollThread.EXPECTED_STATE + "::" + "false", "Down");
  +	}
  +	
  +	public Properties getProperties(EventLogTreeItem item) {
  +		loadPropertyMap(); // temporary to fascilitate debugging
  +		
  +		
  +		Properties p = new Properties();
  +		HashMap map = item.getProperties();
  +		Object key = null;
  +		String keyString, valueStringKey, valueString;
  +		for( Iterator i = map.keySet().iterator(); i.hasNext();) {
  +			key = i.next();
  +			if( key.equals(EventLogTreeItem.DATE)) {
  +				keyString = propertyToMessageMap.get(key) == null ? (String)key : propertyToMessageMap.get(key).toString();
  +				valueString = getDateAsString(((Long)map.get(key)).longValue());
  +				p.put(keyString, valueString);
  +			} else if( key instanceof String ) {
  +				keyString = propertyToMessageMap.get(key) == null ? (String)key : propertyToMessageMap.get(key).toString();
  +				valueStringKey = key + "::" + map.get(key).toString();
  +				valueString = propertyToMessageMap.get(valueStringKey) == null ? map.get(key).toString() : propertyToMessageMap.get(valueStringKey).toString();
  +				p.put(keyString, valueString);
  +			}
  +		}
  +		return p;
  +	}
  +	
  +	protected String getDateAsString(long date) {
  +		long now = new Date().getTime();
  +		long seconds = (now - date) / 1000;
  +		long minutes = seconds / 60;
  +		long hours = minutes / 60;
  +		minutes -= (hours * 60);
  +		String minString = minutes + " " + (minutes == 1 ? "minute" : "minutes") + " ago";
  +		if( hours == 0 )
  +			return minString;
  +		return hours + " " + (hours == 1 ? "hour" : "hours") + ", " + minString; 
  +	}
   }
  
  
  



More information about the jboss-cvs-commits mailing list