[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