[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 30 11:13:52 EST 2006


  User: rawb    
  Date: 06/11/30 11:13:52

  Modified:    as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/server/providers 
                        EventLogViewProvider.java
  Log:
  Added preferences page
  
  Revision  Changes    Path
  1.4       +180 -5    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.3
  retrieving revision 1.4
  diff -u -b -r1.3 -r1.4
  --- EventLogViewProvider.java	28 Nov 2006 17:33:35 -0000	1.3
  +++ EventLogViewProvider.java	30 Nov 2006 16:13:52 -0000	1.4
  @@ -22,18 +22,31 @@
   package org.jboss.ide.eclipse.as.ui.views.server.providers;
   
   import java.util.ArrayList;
  +import java.util.Collections;
  +import java.util.Date;
  +import java.util.HashMap;
   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.core.runtime.Preferences;
   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.SWT;
   import org.eclipse.swt.graphics.Image;
  +import org.eclipse.swt.layout.FormAttachment;
  +import org.eclipse.swt.layout.FormData;
  +import org.eclipse.swt.layout.FormLayout;
  +import org.eclipse.swt.layout.GridLayout;
  +import org.eclipse.swt.widgets.Button;
  +import org.eclipse.swt.widgets.Composite;
  +import org.eclipse.swt.widgets.Group;
  +import org.eclipse.swt.widgets.Label;
   import org.eclipse.swt.widgets.Shell;
   import org.eclipse.ui.views.properties.IPropertySheetPage;
   import org.eclipse.wst.server.core.IServer;
  @@ -43,6 +56,7 @@
   import org.jboss.ide.eclipse.as.core.model.EventLogModel.IEventLogListener;
   import org.jboss.ide.eclipse.as.core.util.SimpleTreeItem;
   import org.jboss.ide.eclipse.as.ui.JBossServerUIPlugin;
  +import org.jboss.ide.eclipse.as.ui.preferencepages.ViewProviderPreferenceComposite;
   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;
  @@ -51,6 +65,14 @@
   
   public class EventLogViewProvider extends JBossServerViewExtension implements IEventLogListener, ISimplePropertiesHolder {
   	
  +	public static final String SHOW_TIMESTAMP = "org.jboss.ide.eclipse.as.ui.views.server.providers.EventLogViewProvider.showTimestamp";
  +	public static final String GROUP_BY_CATEGORY = "org.jboss.ide.eclipse.as.ui.views.server.providers.EventLogViewProvider.groupByCategory";
  +	public static final String EVENT_ON_TOP = "org.jboss.ide.eclipse.as.ui.views.server.providers.EventLogViewProvider.eventOnTop";
  +	public static final int NEWEST_ON_TOP = 1;
  +	public static final int OLDEST_ON_TOP = 2;
  +	public static final int _TRUE_ = 1;
  +	public static final int _FALSE_ = 2;
  +	
   	private ITreeContentProvider contentProvider;
   	private LabelProvider labelProvider;
   	
  @@ -61,6 +83,17 @@
   	private IServer input;
   	private Action clearLogAction;
   	
  +	private static HashMap majorTypeToName = new HashMap();
  +	static {
  +		IExtensionRegistry registry = Platform.getExtensionRegistry();
  +		IConfigurationElement[] cf = registry.getConfigurationElementsFor(JBossServerUIPlugin.PLUGIN_ID, "EventLogMajorType");
  +		for( int i = 0; i < cf.length; i++ ) {
  +			String type = cf[i].getAttribute("typeId");
  +			String name = cf[i].getAttribute("name");
  +			majorTypeToName.put(type, name);
  +		}
  +	}
  +	
   
   	public EventLogViewProvider() {
   		contentProvider = new EventLogContentProvider();
  @@ -85,7 +118,7 @@
   	public class EventLogContentProvider implements ITreeContentProvider {
   		public Object[] getChildren(Object parentElement) {
   			if( parentElement instanceof ServerViewProvider && input != null ) {
  -				boolean categorize = true; // TODO: get from preferences 
  +				boolean categorize = getCategorize(); // TODO: get from preferences 
   				if( categorize ) 
   					return getRootCategories();
   				return EventLogModel.getModel(input).getRoot().getChildren();
  @@ -102,6 +135,9 @@
   							items.add(children[i]);
   					}
   				}
  +				
  +				if( getSortOrder() ) Collections.reverse(items);
  +				
   				return (Object[]) items.toArray(new Object[items.size()]);
   			}
   			
  @@ -172,6 +208,7 @@
   	    }
   
   	    public String getText(Object element) {
  +	    	String suffix = getShowTimestamp() ? createTimestamp(element) : "";
   	    	if( labelProviderDelegates == null )
   	    		loadLabelProviderDelegates();
   
  @@ -179,18 +216,24 @@
   	    		return ((ServerViewProvider)element).getName();
   	    	}
   
  -	    	if( !(element instanceof EventLogTreeItem)) return element.toString();
  +	    	if( !(element instanceof EventLogTreeItem)) {
  +		    	if( element instanceof String ) {
  +		    		String val = (String)majorTypeToName.get(element);
  +		    		if( val != null ) return val;
  +		    	}
  +	    		return element.toString();
  +	    	}
   	    	EventLogTreeItem item = (EventLogTreeItem)element;
   	    	
   	    	for( int i = 0; i < labelProviderDelegates.length; i++ ) {
   	    		if( labelProviderDelegates[i] != null 
   	    				&& labelProviderDelegates[i].supports(item.getSpecificType())) {
   	    			String text = labelProviderDelegates[i].getText((EventLogTreeItem)element);
  -	    			if( text != null ) return text;
  +	    			if( text != null ) return text + suffix;
   	    		}
   	    	}
   
  -	        return element == null ? "" : element.toString();
  +	        return element == null ? "" : element.toString() + suffix;
   	    }
   	    
   	    public void loadLabelProviderDelegates() {
  @@ -247,4 +290,136 @@
       	return new Properties();
   	}
   
  +	public ViewProviderPreferenceComposite createPreferenceComposite(Composite parent) {
  +		return new EventLogPreferenceComposite(parent);
  +	}
  +	
  +	protected class EventLogPreferenceComposite extends ViewProviderPreferenceComposite {
  +		private Button newestFirst, oldestFirst, showTime, sort;
  +		private Group firstGroup;
  +		private Label newestFirstLabel, oldestFirstLabel, showTimeLabel, sortLabel;
  +		public EventLogPreferenceComposite(Composite parent) {
  +			super(parent, SWT.NONE);
  +			setLayout(new FormLayout());
  +			
  +			createWidgets();
  +			fillWidgetsWithValues();
  +		}
  +		protected void fillWidgetsWithValues() {
  +			Preferences store = JBossServerUIPlugin.getDefault().getPluginPreferences();
  +			boolean showTimestamp = getShowTimestamp();
  +			boolean categorize = getCategorize();
  +			boolean onTop = getSortOrder();
  +			
  +			sort.setSelection(categorize);
  +			showTime.setSelection(showTimestamp);
  +			newestFirst.setSelection(onTop);
  +			oldestFirst.setSelection(!onTop);
  +		}
  +		
  +		
  +		protected void createWidgets() {
  +			firstGroup = new Group(this, SWT.NONE);
  +			firstGroup.setText("Which elements should be at the top?");
  +			firstGroup.setLayout(new GridLayout(2, false));
  +			newestFirst = new Button(firstGroup, SWT.RADIO);
  +			newestFirstLabel = new Label(firstGroup, SWT.NONE);
  +			oldestFirst = new Button(firstGroup, SWT.RADIO);
  +			oldestFirstLabel = new Label(firstGroup, SWT.NONE);
  +			
  +			newestFirstLabel.setText("Newest");
  +			oldestFirstLabel.setText("Oldest");
  +			
  +			FormData firstGroupData = new FormData();
  +			firstGroupData.left = new FormAttachment(0,5);
  +			firstGroupData.top = new FormAttachment(0,5);
  +			firstGroup.setLayoutData(firstGroupData);
  +			
  +			
  +			showTimeLabel = new Label(this, SWT.NONE);
  +			showTimeLabel.setText("Show timestamp? (ex: x minutes ago)");
  +			showTime = new Button(this, SWT.CHECK);
  +			
  +			FormData d = new FormData();
  +			d.left = new FormAttachment(0, 5);
  +			d.top = new FormAttachment(firstGroup, 5);
  +			showTime.setLayoutData(d);
  +			
  +			d = new FormData();
  +			d.left = new FormAttachment(showTime, 5);
  +			d.top = new FormAttachment(firstGroup, 5);
  +			showTimeLabel.setLayoutData(d);
  +
  +			
  +			sortLabel = new Label(this, SWT.NONE);
  +			sortLabel.setText("Sort by event category?");
  +			sort = new Button(this, SWT.CHECK);
  +			
  +			d = new FormData();
  +			d.left = new FormAttachment(0, 5);
  +			d.top = new FormAttachment(showTime, 5);
  +			sort.setLayoutData(d);
  +			
  +			d = new FormData();
  +			d.left = new FormAttachment(sort, 5);
  +			d.top = new FormAttachment(showTime, 5);
  +			sortLabel.setLayoutData(d);
  +		}
  +		public boolean isValid() {
  +			return true;
  +		}
  +		public boolean performCancel() {
  +			return false;
  +		}
  +		public boolean performOk() {
  +			Preferences store = JBossServerUIPlugin.getDefault().getPluginPreferences();
  +			store.setValue(SHOW_TIMESTAMP, showTime.getSelection() ? _TRUE_ : _FALSE_);
  +			store.setValue(GROUP_BY_CATEGORY, sort.getSelection() ? _TRUE_ : _FALSE_);
  +			store.setValue(EVENT_ON_TOP, newestFirst.getSelection() ? NEWEST_ON_TOP : OLDEST_ON_TOP);
  +			return true;
  +		}
  +	}
  +
  +
  +	
  +	
  +	protected boolean getShowTimestamp() {
  +		Preferences store = JBossServerUIPlugin.getDefault().getPluginPreferences();
  +		int showTimestamp = store.getInt(SHOW_TIMESTAMP);
  +		if( showTimestamp == _TRUE_ ) return true;
  +		if( showTimestamp == _FALSE_) return false;
  +		return false; // default
  +	}
  +	protected boolean getSortOrder() {
  +		Preferences store = JBossServerUIPlugin.getDefault().getPluginPreferences();
  +		int showTimestamp = store.getInt(EVENT_ON_TOP);
  +		if( showTimestamp == OLDEST_ON_TOP) return false;
  +		return true;
  +	}
  +	protected boolean getCategorize() {
  +		Preferences store = JBossServerUIPlugin.getDefault().getPluginPreferences();
  +		int showTimestamp = store.getInt(GROUP_BY_CATEGORY);
  +		if( showTimestamp == _TRUE_ ) return true;
  +		if( showTimestamp == _FALSE_) return false;
  +		return false; // default
  +	}
  +
  +	protected String createTimestamp(Object element) {
  +		if( element instanceof EventLogTreeItem ) {
  +			Long v = (Long)   ((EventLogTreeItem)element).getProperty(EventLogTreeItem.DATE);
  +			if( v == null ) return "";
  +
  +			double date = v.doubleValue();
  +			double now = new Date().getTime();
  +			int seconds = (int) (( now - date) / 1000);
  +			int minutes = seconds / 60;
  +			int hours = minutes / 60;
  +			minutes -= (hours * 60);
  +			String minString = minutes + "m ago";
  +			if( hours == 0 )
  +				return "   (" + minString + ")";
  +			return "   (" + hours + "h " + minString + ")"; 
  +		}
  +		return "";
  +	}
   }
  
  
  



More information about the jboss-cvs-commits mailing list