summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2007-07-16 04:43:23 (EDT)
committerEike Stepper2007-07-16 04:43:23 (EDT)
commit4e6f3377845f385cacd5ba0431105adbda842b00 (patch)
tree98911b37f41c503ac76129f3e0bc241f6084faac
parent3a0e48e40b977acc4a926166d545934e7f927bb5 (diff)
downloadcdo-4e6f3377845f385cacd5ba0431105adbda842b00.zip
cdo-4e6f3377845f385cacd5ba0431105adbda842b00.tar.gz
cdo-4e6f3377845f385cacd5ba0431105adbda842b00.tar.bz2
*** empty log message ***
-rw-r--r--plugins/org.eclipse.emf.cdo.ui/CDO UI.launch116
-rw-r--r--plugins/org.eclipse.net4j.ui/plugin.xml10
-rw-r--r--plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/internal/ui/bundle/OM.java6
-rw-r--r--plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/ui/UIUtil.java44
-rw-r--r--plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/ui/widgets/HistoryCombo.java1001
-rw-r--r--plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/ui/widgets/HistoryText.java246
-rw-r--r--plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/ui/widgets/HistoryView.java66
-rw-r--r--plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/collection/History.java36
-rw-r--r--plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/collection/PreferenceHistory.java6
-rw-r--r--plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/om/pref/Preference.java9
-rw-r--r--plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/om/pref/Preferences.java18
-rw-r--r--plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/StringUtil.java11
-rw-r--r--plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/collection/IHistory.java6
13 files changed, 487 insertions, 1088 deletions
diff --git a/plugins/org.eclipse.emf.cdo.ui/CDO UI.launch b/plugins/org.eclipse.emf.cdo.ui/CDO UI.launch
index 130e122..316fcc6 100644
--- a/plugins/org.eclipse.emf.cdo.ui/CDO UI.launch
+++ b/plugins/org.eclipse.emf.cdo.ui/CDO UI.launch
@@ -38,22 +38,22 @@
<mapEntry key="org.eclipse.ui/trace/contexts" value="false"/>
<mapEntry key="org.eclipse.wst.common.environment/trace/error" value="true"/>
<mapEntry key="org.eclipse.debug.ui/debug/viewers/updateSequence" value="false"/>
-<mapEntry key="org.eclipse.wst.common.environment/trace/warning" value="true"/>
<mapEntry key="org.eclipse.emf.validation/debug/exceptions/throwing" value="false"/>
+<mapEntry key="org.eclipse.wst.common.environment/trace/warning" value="true"/>
<mapEntry key="org.eclipse.osgi/trace/filename" value="runtime.traces"/>
<mapEntry key="org.eclipse.wst.sse.ui/extendededitoractionbuilder" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug" value="true"/>
-<mapEntry key="org.eclipse.wst.sse.ui/actioncontributor/debugstatusfields" value="true"/>
<mapEntry key="org.eclipse.debug.ui/debug/contextlaunching" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/actioncontributor/debugstatusfields" value="true"/>
+<mapEntry key="org.eclipse.jdt.core/debug" value="true"/>
<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug" value="false"/>
<mapEntry key="org.eclipse.net4j.tcp/debug" value="true"/>
<mapEntry key="org.eclipse.team.cvs.core/dirtycaching" value="false"/>
<mapEntry key="org.eclipse.emf.cdo.server/debug.repository" value="true"/>
<mapEntry key="org.eclipse.jdt.core/debug/javamodel" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.ui/contentOutline" value="false"/>
<mapEntry key="org.eclipse.emf.ocl/debug/exceptions/throwing" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.ui/preferences-properties" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/contentOutline" value="false"/>
<mapEntry key="org.eclipse.wtp.common/debug/logtrace" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/preferences-properties" value="false"/>
<mapEntry key="org.eclipse.ui.intro/trace/printHTML" value="false"/>
<mapEntry key="org.eclipse.emf.query.ocl/debug" value="true"/>
<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/createChanges" value="300"/>
@@ -61,39 +61,39 @@
<mapEntry key="org.eclipse.net4j.util/debug.lifecycle.dump" value="true"/>
<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPerspectiveListener" value="false"/>
<mapEntry key="org.eclipse.emf.cdo/debug.util" value="true"/>
-<mapEntry key="org.eclipse.osgi/resolver/debug" value="false"/>
<mapEntry key="org.eclipse.wst.sse.ui/propertySheet" value="false"/>
+<mapEntry key="org.eclipse.osgi/resolver/debug" value="false"/>
<mapEntry key="org.eclipse.team.core/refreshjob" value="false"/>
-<mapEntry key="org.eclipse.ui/debug" value="false"/>
<mapEntry key="org.eclipse.update.core/debug/installhandler" value="false"/>
+<mapEntry key="org.eclipse.ui/debug" value="false"/>
<mapEntry key="org.eclipse.wtp.common/debug/loglevel" value="WARNING"/>
<mapEntry key="org.eclipse.help.ui/debug/infopop" value="false"/>
<mapEntry key="org.eclipse.pde.core/classpath" value="false"/>
<mapEntry key="org.eclipse.team.cvs.core/threading" value="false"/>
<mapEntry key="org.eclipse.equinox.preferences/general" value="false"/>
<mapEntry key="org.eclipse.net4j.jms.server/debug.store" value="true"/>
-<mapEntry key="org.eclipse.ui/trace/handlers.performance" value="false"/>
<mapEntry key="org.eclipse.wst.sse.core/format" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/handlers.performance" value="false"/>
<mapEntry key="org.eclipse.ocl/debug/evaluation" value="false"/>
<mapEntry key="org.eclipse.ui/trace/operations.verbose" value="false"/>
<mapEntry key="org.eclipse.emf.validation/debug/constraints" value="false"/>
<mapEntry key="org.eclipse.osgi/trace/activation" value="false"/>
<mapEntry key="org.eclipse.ocl/debug/exceptions/catching" value="false"/>
<mapEntry key="org.eclipse.debug.core/debug/commands" value="false"/>
-<mapEntry key="org.eclipse.ui/perf/workbench.restore" value="30000"/>
<mapEntry key="org.eclipse.team.core/threading" value="false"/>
+<mapEntry key="org.eclipse.ui/perf/workbench.restore" value="30000"/>
<mapEntry key="org.eclipse.wst.sse.core/structureddocument" value="false"/>
<mapEntry key="org.eclipse.net4j.util/perf" value="false"/>
<mapEntry key="org.eclipse.emf.transaction/debug/methods/exiting" value="false"/>
<mapEntry key="org.eclipse.update.core/debug/parsing" value="false"/>
-<mapEntry key="org.eclipse.emf.cdo.protocol/debug.protocol" value="true"/>
<mapEntry key="org.eclipse.jdt.core/debug/postaction" value="false"/>
+<mapEntry key="org.eclipse.emf.cdo.protocol/debug.protocol" value="true"/>
<mapEntry key="org.eclipse.ocl/debug" value="true"/>
<mapEntry key="org.eclipse.ui/trace/graphics" value="false"/>
<mapEntry key="org.eclipse.osgi/defaultprofile/logsynchronously" value="false"/>
<mapEntry key="org.eclipse.net4j.db/debug" value="true"/>
-<mapEntry key="org.eclipse.emf.query/debug/exceptions/throwing" value="false"/>
<mapEntry key="org.eclipse.wst.common.environment/trace/ws_dt_cmd_engine" value="true"/>
+<mapEntry key="org.eclipse.emf.query/debug/exceptions/throwing" value="false"/>
<mapEntry key="org.eclipse.osgi/monitor/activation" value="false"/>
<mapEntry key="org.eclipse.net4j.jms/debug.protocol" value="true"/>
<mapEntry key="org.eclipse.wst.sse.ui/gotoNextAnnotation" value="false"/>
@@ -101,8 +101,8 @@
<mapEntry key="org.eclipse.debug.ui/debug" value="false"/>
<mapEntry key="org.eclipse.jdt.core/debug/buffermanager" value="false"/>
<mapEntry key="org.eclipse.help.base/debug/search" value="false"/>
-<mapEntry key="org.eclipse.jface.text/debug/ContentAssistSubjectAdapters" value="false"/>
<mapEntry key="org.eclipse.pde.build/debug" value="false"/>
+<mapEntry key="org.eclipse.jface.text/debug/ContentAssistSubjectAdapters" value="false"/>
<mapEntry key="org.eclipse.wst.common.environment/trace/ws_ant" value="true"/>
<mapEntry key="org.eclipse.jdt.ui/perf/search/participants" value="300"/>
<mapEntry key="org.eclipse.emf.validation/debug/parsers" value="false"/>
@@ -111,13 +111,13 @@
<mapEntry key="org.eclipse.ui/perf/perspective.create" value="800"/>
<mapEntry key="org.eclipse.update.core/debug/type" value="false"/>
<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin" value="false"/>
-<mapEntry key="org.eclipse.emf.workspace/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPropertyChangeListener" value="false"/>
<mapEntry key="org.eclipse.osgi/resolver/generics" value="false"/>
+<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPropertyChangeListener" value="false"/>
+<mapEntry key="org.eclipse.emf.workspace/debug/methods/exiting" value="false"/>
<mapEntry key="org.eclipse.wst.common.project.facet.core/actionSorting" value="false"/>
<mapEntry key="org.eclipse.osgi/resolver/requires" value="false"/>
-<mapEntry key="org.eclipse.emf.workspace/debug/exceptions/throwing" value="false"/>
<mapEntry key="org.eclipse.core.resources/refresh" value="false"/>
+<mapEntry key="org.eclipse.emf.workspace/debug/exceptions/throwing" value="false"/>
<mapEntry key="org.eclipse.jdt.core/perf/containerinitializer" value="5000"/>
<mapEntry key="org.eclipse.osgi/profile/benchmark" value="false"/>
<mapEntry key="org.eclipse.help.webapp/debug" value="true"/>
@@ -128,14 +128,14 @@
<mapEntry key="org.eclipse.ui/trace/handlers" value="false"/>
<mapEntry key="org.eclipse.ui/trace/contexts.performance" value="false"/>
<mapEntry key="org.eclipse.jem.util/debug/logtrace" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/metafiles" value="false"/>
<mapEntry key="org.eclipse.jdt.core/perf/completion" value="300"/>
+<mapEntry key="org.eclipse.team.cvs.core/metafiles" value="false"/>
<mapEntry key="org.eclipse.osgi/profile/startup" value="false"/>
<mapEntry key="org.eclipse.core.jobs/jobs" value="false"/>
<mapEntry key="org.eclipse.wst.sse.ui/debug" value="true"/>
-<mapEntry key="org.eclipse.core.resources/perf/save.participants" value="500"/>
-<mapEntry key="org.eclipse.emf.query.ocl/debug/exceptions/throwing" value="false"/>
<mapEntry key="org.eclipse.wst.common.environment/trace/info" value="true"/>
+<mapEntry key="org.eclipse.emf.query.ocl/debug/exceptions/throwing" value="false"/>
+<mapEntry key="org.eclipse.core.resources/perf/save.participants" value="500"/>
<mapEntry key="org.eclipse.net4j/perf" value="false"/>
<mapEntry key="org.eclipse.help.base/debug" value="true"/>
<mapEntry key="org.eclipse.net4j/debug" value="true"/>
@@ -153,11 +153,11 @@
<mapEntry key="org.eclipse.core.resources/contenttype/cache" value="false"/>
<mapEntry key="org.eclipse.emf.cdo/debug.repository" value="true"/>
<mapEntry key="org.eclipse.wst.sse.ui/extendedconfigurationbuilder" value="false"/>
-<mapEntry key="org.eclipse.update.core/debug/configuration" value="false"/>
<mapEntry key="org.eclipse.core.jobs/jobs/locks" value="false"/>
+<mapEntry key="org.eclipse.update.core/debug/configuration" value="false"/>
<mapEntry key="org.eclipse.wst.xml.core/debug/cmdocumentmanager" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/handlers.verbose.commandId" value=""/>
<mapEntry key="org.eclipse.core.runtime/url/debug/connect" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/handlers.verbose.commandId" value=""/>
<mapEntry key="org.eclipse.ui.ide/debug" value="false"/>
<mapEntry key="org.eclipse.osgi/profile/debug" value="false"/>
<mapEntry key="org.eclipse.pde.core/debug" value="true"/>
@@ -166,17 +166,17 @@
<mapEntry key="org.eclipse.net4j.util/debug.registry" value="true"/>
<mapEntry key="org.eclipse.jdt.ui/perf/explorer/createPartControl" value="1300"/>
<mapEntry key="org.eclipse.jdt.core/debug/hierarchy" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/perf/variableinitializer" value="5000"/>
-<mapEntry key="org.eclipse.emf.cdo/debug.object" value="false"/>
<mapEntry key="org.eclipse.ui.ide/debug/internalerror/openDialog" value="false"/>
+<mapEntry key="org.eclipse.emf.cdo/debug.object" value="false"/>
+<mapEntry key="org.eclipse.jdt.core/perf/variableinitializer" value="5000"/>
<mapEntry key="org.eclipse.emf.cdo.server/debug.revision" value="true"/>
<mapEntry key="org.eclipse.core.resources/strings" value="false"/>
<mapEntry key="org.eclipse.jdt.core/debug/sourcemapper" value="false"/>
<mapEntry key="org.eclipse.core.resources/save/mastertable" value="false"/>
<mapEntry key="org.eclipse.core.expressions/tracePropertyResolving" value="false"/>
-<mapEntry key="org.eclipse.core.resources/preferences" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javadelta" value="false"/>
<mapEntry key="org.eclipse.ui/perf/showHeapStatus" value="true"/>
+<mapEntry key="org.eclipse.jdt.core/debug/javadelta" value="false"/>
+<mapEntry key="org.eclipse.core.resources/preferences" value="false"/>
<mapEntry key="org.eclipse.jdt.core/debug/selection" value="false"/>
<mapEntry key="org.eclipse.emf.workspace/debug" value="true"/>
<mapEntry key="org.eclipse.jdt.ui/perf/content_assist_sorters/extensions" value=""/>
@@ -190,25 +190,25 @@
<mapEntry key="org.eclipse.emf.transaction/debug/transactions" value="false"/>
<mapEntry key="org.eclipse.ocl/debug/parsing" value="false"/>
<mapEntry key="org.eclipse.update.core/debug" value="true"/>
-<mapEntry key="org.eclipse.osgi/debug/security" value="false"/>
<mapEntry key="org.eclipse.wst.sse.core/tasks/preferences" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/metainfo" value="false"/>
+<mapEntry key="org.eclipse.osgi/debug/security" value="false"/>
<mapEntry key="org.eclipse.core.resources/build/needbuild" value="false"/>
+<mapEntry key="org.eclipse.core.resources/restore/metainfo" value="false"/>
<mapEntry key="org.eclipse.core.resources/perf/builders" value="10000"/>
-<mapEntry key="org.eclipse.ui/perf/perspective.listeners" value="200"/>
<mapEntry key="org.eclipse.net4j.jms.admin/debug.protocol" value="true"/>
+<mapEntry key="org.eclipse.ui/perf/perspective.listeners" value="200"/>
<mapEntry key="org.eclipse.ui/debug/showAllJobs" value="false"/>
<mapEntry key="org.eclipse.core.resources/history" value="false"/>
<mapEntry key="org.eclipse.wst.sse.ui/propertyChangeUpdateActionContributionItem" value="false"/>
<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener" value="false"/>
<mapEntry key="org.eclipse.jdt.core/debug/search" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/cvsprotocol" value="true"/>
<mapEntry key="org.eclipse.pde.core/validation" value="false"/>
+<mapEntry key="org.eclipse.team.cvs.core/cvsprotocol" value="true"/>
<mapEntry key="org.eclipse.wst.sse.ui/extendededitoractionbuilder/readtime" value="false"/>
<mapEntry key="org.eclipse.jface.text/debug/AnnotationPainter" value="false"/>
<mapEntry key="org.eclipse.core.resources/restore/mastertable" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.core/tasks" value="false"/>
<mapEntry key="org.eclipse.core.runtime/debug" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/tasks" value="false"/>
<mapEntry key="org.eclipse.equinox.preferences/set" value="false"/>
<mapEntry key="org.eclipse.core.resources/restore/snapshots" value="false"/>
<mapEntry key="org.eclipse.ui/perf/perspective.switch" value="800"/>
@@ -221,16 +221,16 @@
<mapEntry key="org.eclipse.core.runtime/url/debug/cachecopy" value="false"/>
<mapEntry key="org.eclipse.core.runtime/perf/success" value="false"/>
<mapEntry key="org.eclipse.net4j/debug.connector" value="true"/>
-<mapEntry key="org.eclipse.wst.dtd.ui/projectionperf" value="false"/>
<mapEntry key="org.eclipse.jdt.core/perf/selection" value="300"/>
+<mapEntry key="org.eclipse.wst.dtd.ui/projectionperf" value="false"/>
<mapEntry key="org.eclipse.osgi/debug/startlevel" value="false"/>
<mapEntry key="org.eclipse.ocl/debug/methods/entering" value="false"/>
<mapEntry key="org.eclipse.core.resources/restore" value="false"/>
<mapEntry key="org.eclipse.osgi/resolver/wiring" value="false"/>
<mapEntry key="org.eclipse.core.resources/perf/snapshot" value="1000"/>
<mapEntry key="org.eclipse.ui.intro/trace/logPerformance" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/contexts.verbose" value="false"/>
<mapEntry key="org.eclipse.osgi/debug/loader" value="false"/>
+<mapEntry key="org.eclipse.ui/trace/contexts.verbose" value="false"/>
<mapEntry key="org.eclipse.osgi/resolver/grouping" value="false"/>
<mapEntry key="org.eclipse.wst.sse.ui/debug/reconcilerjob" value="false"/>
<mapEntry key="org.eclipse.jdt.ui/perf/explorer/makeActions" value="1000"/>
@@ -246,11 +246,11 @@
<mapEntry key="org.eclipse.emf.validation/debug/cache" value="false"/>
<mapEntry key="org.eclipse.update.core/debug/install" value="false"/>
<mapEntry key="org.eclipse.equinox.registry/debug/events" value="false"/>
-<mapEntry key="org.eclipse.help/debug/protocols" value="false"/>
<mapEntry key="org.eclipse.core.resources/save/metainfo" value="false"/>
+<mapEntry key="org.eclipse.help/debug/protocols" value="false"/>
<mapEntry key="org.eclipse.net4j.util/debug.lifecycle" value="true"/>
-<mapEntry key="org.eclipse.emf.validation/debug/methods/entering" value="false"/>
<mapEntry key="org.eclipse.ui/perf/contentTypes" value="200"/>
+<mapEntry key="org.eclipse.emf.validation/debug/methods/entering" value="false"/>
<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser/inprocess" value="false"/>
<mapEntry key="org.eclipse.jdt.core/perf/javadeltalistener" value="500"/>
<mapEntry key="org.eclipse.core.resources/perf/listeners" value="500"/>
@@ -264,8 +264,8 @@
<mapEntry key="org.eclipse.wst.sse.ui/debug/reconcilerValidators" value="false"/>
<mapEntry key="org.eclipse.emf.validation/debug/xml" value="false"/>
<mapEntry key="org.eclipse.osgi/debug/manifest" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/multipageeditor" value="false"/>
<mapEntry key="org.eclipse.emf.cdo/debug" value="true"/>
+<mapEntry key="org.eclipse.ui/trace/multipageeditor" value="false"/>
<mapEntry key="org.eclipse.emf.cdo.ui/debug" value="true"/>
<mapEntry key="org.eclipse.emf.workspace/debug/exceptions/catching" value="false"/>
<mapEntry key="org.eclipse.core.resources/build/needbuildstack" value="false"/>
@@ -281,23 +281,23 @@
<mapEntry key="org.eclipse.osgi/trace/classLoading" value="false"/>
<mapEntry key="org.eclipse.net4j.jms.server.jdbc/debug" value="true"/>
<mapEntry key="org.eclipse.wst.xml.ui/projectionperf" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/errorondeadlock" value="false"/>
<mapEntry key="org.eclipse.core.resources/save" value="false"/>
+<mapEntry key="org.eclipse.core.jobs/jobs/errorondeadlock" value="false"/>
<mapEntry key="org.eclipse.emf.transaction/debug/exceptions/throwing" value="false"/>
<mapEntry key="org.eclipse.core.resources/contenttype" value="false"/>
-<mapEntry key="org.eclipse.jem.util/debug/loglevel" value="WARNING"/>
<mapEntry key="org.eclipse.jface.text/debug/FastPartitioner/PositionCache" value="false"/>
+<mapEntry key="org.eclipse.jem.util/debug/loglevel" value="WARNING"/>
<mapEntry key="org.eclipse.emf.validation/debug/exceptions/catching" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/compiler" value="false"/>
<mapEntry key="org.eclipse.emf.cdo.server/debug" value="true"/>
+<mapEntry key="org.eclipse.jdt.core/debug/compiler" value="false"/>
<mapEntry key="org.eclipse.osgi/debug/events" value="false"/>
<mapEntry key="org.eclipse.ui/trace/commands" value="false"/>
<mapEntry key="org.eclipse.equinox.preferences/get" value="false"/>
<mapEntry key="org.eclipse.wst.sse.ui/filemodelprovider/operations" value="false"/>
<mapEntry key="org.eclipse.jdt.ui/debug/ResultCollector" value="false"/>
<mapEntry key="org.eclipse.debug.ui/debug/launchhistory" value="false"/>
-<mapEntry key="org.eclipse.net4j.util/debug.om" value="true"/>
<mapEntry key="org.eclipse.wst.sse.ui/extendededitoractionbuilder/contributetime" value="false"/>
+<mapEntry key="org.eclipse.net4j.util/debug.om" value="true"/>
<mapEntry key="org.eclipse.net4j.jms.server/debug" value="true"/>
<mapEntry key="org.eclipse.emf.workspace/debug/methods/entering" value="false"/>
<mapEntry key="org.eclipse.emf.query.ocl/debug/methods/entering" value="false"/>
@@ -309,8 +309,8 @@
<mapEntry key="org.eclipse.ui.intro/debug" value="true"/>
<mapEntry key="org.eclipse.emf.transaction/debug/locking" value="false"/>
<mapEntry key="org.eclipse.jdt.core/debug/cpresolution/advanced" value="false"/>
-<mapEntry key="org.eclipse.net4j.jms/debug" value="true"/>
<mapEntry key="org.eclipse.emf.validation/debug/providers" value="false"/>
+<mapEntry key="org.eclipse.net4j.jms/debug" value="true"/>
<mapEntry key="org.eclipse.osgi/eclipseadaptor/converter/debug" value="false"/>
<mapEntry key="org.eclipse.emf.cdo.server/debug.resource" value="true"/>
<mapEntry key="org.eclipse.pde.core/cache" value="false"/>
@@ -318,16 +318,16 @@
<mapEntry key="org.eclipse.wst.sse.ui/extendedconfigurationbuilder/time" value="false"/>
<mapEntry key="org.eclipse.wst.sse.core/tasks/time" value="false"/>
<mapEntry key="org.eclipse.emf.cdo/debug.transaction" value="true"/>
-<mapEntry key="org.eclipse.wst.sse.ui/filemodelprovider/lifecyclelistener" value="false"/>
<mapEntry key="org.eclipse.emf.query/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.debug.core/debug/events" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.ui/filemodelprovider/lifecyclelistener" value="false"/>
<mapEntry key="org.eclipse.net4j/debug.selector" value="true"/>
+<mapEntry key="org.eclipse.debug.core/debug/events" value="false"/>
<mapEntry key="org.eclipse.jdt.ui/debug" value="true"/>
-<mapEntry key="org.eclipse.net4j.db/debug.sql" value="true"/>
-<mapEntry key="org.eclipse.wst.sse.core/filebuffers/modelmanagement" value="false"/>
<mapEntry key="org.eclipse.osgi/monitor/classes" value="false"/>
-<mapEntry key="org.eclipse.ui/perf/part.input" value="200"/>
+<mapEntry key="org.eclipse.wst.sse.core/filebuffers/modelmanagement" value="false"/>
+<mapEntry key="org.eclipse.net4j.db/debug.sql" value="true"/>
<mapEntry key="org.eclipse.wst.sse.ui/debug/tracefilter" value=""/>
+<mapEntry key="org.eclipse.ui/perf/part.input" value="200"/>
<mapEntry key="org.eclipse.wtp.common/debug/logtracefile" value="false"/>
<mapEntry key="org.eclipse.emf.query/debug" value="true"/>
<mapEntry key="org.eclipse.ui.intro.universal/debug" value="true"/>
@@ -343,11 +343,11 @@
<mapEntry key="org.eclipse.jdt.core.manipulation/debug" value="true"/>
<mapEntry key="org.eclipse.net4j.jms.admin/debug" value="true"/>
<mapEntry key="org.eclipse.jdt.core/debug/cpresolution" value="false"/>
-<mapEntry key="org.eclipse.wst.common.project.facet.core/activation" value="false"/>
<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser" value="false"/>
+<mapEntry key="org.eclipse.wst.common.project.facet.core/activation" value="false"/>
<mapEntry key="org.eclipse.team.cvs.ssh/ssh_protocol" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/stacktrace" value="false"/>
<mapEntry key="org.eclipse.ui/perf/part.create" value="800"/>
+<mapEntry key="org.eclipse.core.resources/build/stacktrace" value="false"/>
<mapEntry key="org.eclipse.ui.intro/trace/logInfo" value="true"/>
<mapEntry key="org.eclipse.team.core/streams" value="false"/>
<mapEntry key="org.eclipse.ui.ide/debug/undomonitor" value="false"/>
@@ -355,11 +355,11 @@
<mapEntry key="org.eclipse.ui/experimental/menus" value="false"/>
<mapEntry key="org.eclipse.core.jobs/jobs/shutdown" value="false"/>
<mapEntry key="org.eclipse.osgi/debug/packageadmin" value="false"/>
-<mapEntry key="org.eclipse.net4j.container.ui/debug" value="true"/>
<mapEntry key="org.eclipse.emf.cdo/debug.session" value="true"/>
+<mapEntry key="org.eclipse.net4j.container.ui/debug" value="true"/>
<mapEntry key="org.eclipse.core.runtime/compatibility/debug" value="false"/>
-<mapEntry key="org.eclipse.emf.cdo/debug.adapter" value="true"/>
<mapEntry key="org.eclipse.wst.sse.ui/storagemodelprovider/operations" value="false"/>
+<mapEntry key="org.eclipse.emf.cdo/debug.adapter" value="true"/>
<mapEntry key="org.eclipse.ui/debug/declaredImages" value="false"/>
<mapEntry key="org.eclipse.update.core/debug/reconciler" value="false"/>
<mapEntry key="org.eclipse.ui.ide/debug/gc" value="false"/>
@@ -369,36 +369,36 @@
<mapEntry key="org.eclipse.net4j.db.mysql/debug.sql" value="true"/>
<mapEntry key="org.eclipse.ui.workbench/debug" value="false"/>
<mapEntry key="org.eclipse.jdt.ui/perf/content_assist/extensions" value="1000"/>
-<mapEntry key="org.eclipse.osgi/debug/filter" value="false"/>
<mapEntry key="org.eclipse.emf.cdo.protocol/debug.model" value="true"/>
+<mapEntry key="org.eclipse.osgi/debug/filter" value="false"/>
<mapEntry key="org.eclipse.debug.core/debug" value="false"/>
<mapEntry key="org.eclipse.core.resources/debug" value="false"/>
<mapEntry key="org.eclipse.jdt.core/debug/zipaccess" value="false"/>
<mapEntry key="org.eclipse.jem.util/debug/logtracefile" value="false"/>
<mapEntry key="org.eclipse.ui.browser/debug" value="false"/>
<mapEntry key="org.eclipse.osgi/profile/impl" value="org.eclipse.osgi.internal.profile.DefaultProfileLogger"/>
-<mapEntry key="org.eclipse.net4j.jms.server/debug.protocol" value="true"/>
<mapEntry key="org.eclipse.update.core/debug/web" value="false"/>
+<mapEntry key="org.eclipse.net4j.jms.server/debug.protocol" value="true"/>
<mapEntry key="org.eclipse.team.cvs.core/debug" value="false"/>
<mapEntry key="org.eclipse.help/debug" value="true"/>
<mapEntry key="org.eclipse.core.runtime/perf" value="false"/>
<mapEntry key="org.eclipse.osgi/trace/filters" value="trace.properties"/>
-<mapEntry key="org.eclipse.emf.ocl/debug/methods/entering" value="false"/>
<mapEntry key="org.eclipse.wst.sse.core/dom/adapter/notification/time" value="false"/>
+<mapEntry key="org.eclipse.emf.ocl/debug/methods/entering" value="false"/>
<mapEntry key="org.eclipse.net4j/debug.channel" value="true"/>
<mapEntry key="org.eclipse.emf.cdo/debug.revision" value="true"/>
<mapEntry key="org.eclipse.emf.cdo/debug.view" value="true"/>
<mapEntry key="org.eclipse.ui/perf/part.listeners" value="200"/>
<mapEntry key="org.eclipse.debug.ui/debug/viewers/viewer" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.core/dom/adapter/notification/time/criteria" value="10"/>
<mapEntry key="org.eclipse.ui/trace/keyBindings.verbose" value="false"/>
+<mapEntry key="org.eclipse.wst.sse.core/dom/adapter/notification/time/criteria" value="10"/>
<mapEntry key="org.eclipse.wst.common.environment/trace/data" value="true"/>
-<mapEntry key="org.eclipse.osgi/defaultprofile/buffersize" value="256"/>
<mapEntry key="org.eclipse.core.resources/restore/syncinfo" value="false"/>
-<mapEntry key="org.eclipse.team.cvs.core/syncchangeevents" value="false"/>
+<mapEntry key="org.eclipse.osgi/defaultprofile/buffersize" value="256"/>
<mapEntry key="org.eclipse.ui/perf/page.listeners" value="200"/>
-<mapEntry key="org.eclipse.ocl/debug/exceptions/throwing" value="false"/>
+<mapEntry key="org.eclipse.team.cvs.core/syncchangeevents" value="false"/>
<mapEntry key="org.eclipse.emf.cdo.protocol/debug" value="true"/>
+<mapEntry key="org.eclipse.ocl/debug/exceptions/throwing" value="false"/>
<mapEntry key="org.eclipse.emf.cdo/debug.resource" value="true"/>
<mapEntry key="org.eclipse.wst.sse.core/debug" value="true"/>
<mapEntry key="org.eclipse.ui/trace/handlers.verbose" value="false"/>
@@ -418,16 +418,16 @@
<mapEntry key="org.eclipse.core.runtime/url/debug" value="false"/>
<mapEntry key="org.eclipse.osgi/resolver/cycles" value="false"/>
<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener" value="false"/>
-<mapEntry key="org.eclipse.wst.sse.core/filebuffers/lifecycle" value="false"/>
<mapEntry key="org.eclipse.wst.sse.core/structuredmodel/locks" value="true"/>
+<mapEntry key="org.eclipse.wst.sse.core/filebuffers/lifecycle" value="false"/>
<mapEntry key="org.eclipse.jdt.core/debug/resolution" value="false"/>
<mapEntry key="org.eclipse.wst.common.environment/debug" value="true"/>
<mapEntry key="org.eclipse.update.configurator/debug" value="false"/>
-<mapEntry key="org.eclipse.help.ui/debug" value="true"/>
<mapEntry key="org.eclipse.debug.ui/debug/viewers/deltas" value="false"/>
+<mapEntry key="org.eclipse.help.ui/debug" value="true"/>
<mapEntry key="org.eclipse.emf.query.ocl/debug/methods/exiting" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/location" value="false"/>
<mapEntry key="org.eclipse.ocl/debug/methods/exiting" value="false"/>
+<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/location" value="false"/>
<mapEntry key="org.eclipse.wst.sse.ui/debug/reconcilerSpelling" value="false"/>
<mapEntry key="org.eclipse.emf.transaction/debug/methods/entering" value="false"/>
<mapEntry key="org.eclipse.ui.intro.universal/trace/logInfo" value="true"/>
diff --git a/plugins/org.eclipse.net4j.ui/plugin.xml b/plugins/org.eclipse.net4j.ui/plugin.xml
index 37029fd..355dbbf 100644
--- a/plugins/org.eclipse.net4j.ui/plugin.xml
+++ b/plugins/org.eclipse.net4j.ui/plugin.xml
@@ -11,16 +11,22 @@
</category>
<view
category="org.eclipse.net4j.ui"
+ class="org.eclipse.net4j.ui.widgets.HistoryView"
+ id="org.eclipse.net4j.ui.views.HistoryView"
+ name="History">
+ </view>
+ <view
+ category="org.eclipse.net4j.ui"
class="org.eclipse.net4j.internal.ui.views.AcceptorsView"
icon="icons/full/view16/acceptors.gif"
- id="org.eclipse.net4j.internal.ui.views.AcceptorsView"
+ id="org.eclipse.net4j.ui.AcceptorsView"
name="Acceptors">
</view>
<view
category="org.eclipse.net4j.ui"
class="org.eclipse.net4j.internal.ui.views.ConnectorsView"
icon="icons/full/view16/connectors.gif"
- id="org.eclipse.net4j.internal.ui.views.ConnectorsView"
+ id="org.eclipse.net4j.ui.ConnectorsView"
name="Connectors">
</view>
</extension>
diff --git a/plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/internal/ui/bundle/OM.java b/plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/internal/ui/bundle/OM.java
index 590c02f..6e33616 100644
--- a/plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/internal/ui/bundle/OM.java
+++ b/plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/internal/ui/bundle/OM.java
@@ -14,6 +14,8 @@ import org.eclipse.net4j.util.om.OMBundle;
import org.eclipse.net4j.util.om.OMPlatform;
import org.eclipse.net4j.util.om.OSGiActivator;
import org.eclipse.net4j.util.om.log.OMLogger;
+import org.eclipse.net4j.util.om.pref.OMPreference;
+import org.eclipse.net4j.util.om.pref.OMPreferences;
import org.eclipse.net4j.util.om.trace.OMTracer;
/**
@@ -29,6 +31,10 @@ public abstract class OM
public static final OMLogger LOG = BUNDLE.logger();
+ public static final OMPreferences PREFS = BUNDLE.preferences();
+
+ public static final OMPreference<String[]> PREF_HISTORY = PREFS.initArray("history");
+
/**
* @author Eike Stepper
*/
diff --git a/plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/ui/UIUtil.java b/plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/ui/UIUtil.java
new file mode 100644
index 0000000..8358290
--- /dev/null
+++ b/plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/ui/UIUtil.java
@@ -0,0 +1,44 @@
+/***************************************************************************
+ * Copyright (c) 2004 - 2007 Eike Stepper, Germany.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.net4j.ui;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * @author Eike Stepper
+ */
+public final class UIUtil
+{
+ private UIUtil()
+ {
+ }
+
+ public static Composite createGridComposite(Composite parent, int columns)
+ {
+ Composite composite = new Composite(parent, SWT.NONE);
+ composite.setLayout(createGridLayout(columns));
+ return composite;
+ }
+
+ public static GridLayout createGridLayout(int columns)
+ {
+ GridLayout layout = new GridLayout();
+ layout.numColumns = columns;
+ layout.marginHeight = 0;
+ layout.marginWidth = 0;
+ layout.verticalSpacing = 0;
+ layout.horizontalSpacing = 0;
+ return layout;
+ }
+}
diff --git a/plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/ui/widgets/HistoryCombo.java b/plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/ui/widgets/HistoryCombo.java
deleted file mode 100644
index db74758..0000000
--- a/plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/ui/widgets/HistoryCombo.java
+++ /dev/null
@@ -1,1001 +0,0 @@
-/***************************************************************************
- * Copyright (c) 2004 - 2007 Eike Stepper, Germany.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Eike Stepper - initial API and implementation
- **************************************************************************/
-package org.eclipse.net4j.ui.widgets;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.accessibility.Accessible;
-import org.eclipse.swt.custom.CCombo;
-import org.eclipse.swt.events.ControlListener;
-import org.eclipse.swt.events.DisposeListener;
-import org.eclipse.swt.events.DragDetectListener;
-import org.eclipse.swt.events.FocusListener;
-import org.eclipse.swt.events.HelpListener;
-import org.eclipse.swt.events.KeyListener;
-import org.eclipse.swt.events.MenuDetectListener;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.events.MouseEvent;
-import org.eclipse.swt.events.MouseListener;
-import org.eclipse.swt.events.MouseMoveListener;
-import org.eclipse.swt.events.MouseTrackListener;
-import org.eclipse.swt.events.MouseWheelListener;
-import org.eclipse.swt.events.PaintListener;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.events.TraverseListener;
-import org.eclipse.swt.events.VerifyListener;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.graphics.Cursor;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.GCData;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Layout;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.Monitor;
-import org.eclipse.swt.widgets.ScrollBar;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * @author Eike Stepper
- */
-public class HistoryCombo extends Composite
-{
- private CCombo combo;
-
- public HistoryCombo(Composite parent, int comboStyle)
- {
- super(parent, SWT.NONE);
- combo = new CCombo(this, comboStyle);
- }
-
- public CCombo getCombo()
- {
- return combo;
- }
-
- public void add(String string, int index)
- {
- combo.add(string, index);
- }
-
- public void add(String string)
- {
- combo.add(string);
- }
-
- @Override
- public void addControlListener(ControlListener listener)
- {
- combo.addControlListener(listener);
- }
-
- @Override
- public void addDisposeListener(DisposeListener listener)
- {
- combo.addDisposeListener(listener);
- }
-
- @Override
- public void addDragDetectListener(DragDetectListener listener)
- {
- combo.addDragDetectListener(listener);
- }
-
- @Override
- public void addFocusListener(FocusListener listener)
- {
- combo.addFocusListener(listener);
- }
-
- @Override
- public void addHelpListener(HelpListener listener)
- {
- combo.addHelpListener(listener);
- }
-
- @Override
- public void addKeyListener(KeyListener listener)
- {
- combo.addKeyListener(listener);
- }
-
- @Override
- public void addListener(int eventType, Listener listener)
- {
- combo.addListener(eventType, listener);
- }
-
- @Override
- public void addMenuDetectListener(MenuDetectListener listener)
- {
- combo.addMenuDetectListener(listener);
- }
-
- public void addModifyListener(ModifyListener listener)
- {
- combo.addModifyListener(listener);
- }
-
- @Override
- public void addMouseListener(MouseListener listener)
- {
- combo.addMouseListener(listener);
- }
-
- @Override
- public void addMouseMoveListener(MouseMoveListener listener)
- {
- combo.addMouseMoveListener(listener);
- }
-
- @Override
- public void addMouseTrackListener(MouseTrackListener listener)
- {
- combo.addMouseTrackListener(listener);
- }
-
- @Override
- public void addMouseWheelListener(MouseWheelListener listener)
- {
- combo.addMouseWheelListener(listener);
- }
-
- @Override
- public void addPaintListener(PaintListener listener)
- {
- combo.addPaintListener(listener);
- }
-
- public void addSelectionListener(SelectionListener listener)
- {
- combo.addSelectionListener(listener);
- }
-
- @Override
- public void addTraverseListener(TraverseListener listener)
- {
- combo.addTraverseListener(listener);
- }
-
- public void addVerifyListener(VerifyListener listener)
- {
- combo.addVerifyListener(listener);
- }
-
- @Override
- public void changed(Control[] changed)
- {
- combo.changed(changed);
- }
-
- public void clearSelection()
- {
- combo.clearSelection();
- }
-
- @Override
- public Point computeSize(int hint, int hint2, boolean changed)
- {
- return combo.computeSize(hint, hint2, changed);
- }
-
- @Override
- public Point computeSize(int hint, int hint2)
- {
- return combo.computeSize(hint, hint2);
- }
-
- @Override
- public Rectangle computeTrim(int x, int y, int width, int height)
- {
- return combo.computeTrim(x, y, width, height);
- }
-
- public void copy()
- {
- combo.copy();
- }
-
- public void cut()
- {
- combo.cut();
- }
-
- public void deselect(int index)
- {
- combo.deselect(index);
- }
-
- public void deselectAll()
- {
- combo.deselectAll();
- }
-
- @Override
- public void dispose()
- {
- combo.dispose();
- }
-
- @Override
- public boolean dragDetect(Event event)
- {
- return combo.dragDetect(event);
- }
-
- @Override
- public boolean dragDetect(MouseEvent event)
- {
- return combo.dragDetect(event);
- }
-
- @Override
- public boolean equals(Object obj)
- {
- return combo.equals(obj);
- }
-
- @Override
- public boolean forceFocus()
- {
- return combo.forceFocus();
- }
-
- @Override
- public Accessible getAccessible()
- {
- return combo.getAccessible();
- }
-
- @Override
- public Color getBackground()
- {
- return combo.getBackground();
- }
-
- @Override
- public Image getBackgroundImage()
- {
- return combo.getBackgroundImage();
- }
-
- @Override
- public int getBackgroundMode()
- {
- return combo.getBackgroundMode();
- }
-
- @Override
- public int getBorderWidth()
- {
- return combo.getBorderWidth();
- }
-
- @Override
- public Rectangle getBounds()
- {
- return combo.getBounds();
- }
-
- @Override
- public Control[] getChildren()
- {
- return combo.getChildren();
- }
-
- @Override
- public Rectangle getClientArea()
- {
- return combo.getClientArea();
- }
-
- @Override
- public Cursor getCursor()
- {
- return combo.getCursor();
- }
-
- @Override
- public Object getData()
- {
- return combo.getData();
- }
-
- @Override
- public Object getData(String key)
- {
- return combo.getData(key);
- }
-
- @Override
- public Display getDisplay()
- {
- return combo.getDisplay();
- }
-
- @Override
- public boolean getDragDetect()
- {
- return combo.getDragDetect();
- }
-
- public boolean getEditable()
- {
- return combo.getEditable();
- }
-
- @Override
- public boolean getEnabled()
- {
- return combo.getEnabled();
- }
-
- @Override
- public Font getFont()
- {
- return combo.getFont();
- }
-
- @Override
- public Color getForeground()
- {
- return combo.getForeground();
- }
-
- @Override
- public ScrollBar getHorizontalBar()
- {
- return combo.getHorizontalBar();
- }
-
- public String getItem(int index)
- {
- return combo.getItem(index);
- }
-
- public int getItemCount()
- {
- return combo.getItemCount();
- }
-
- public int getItemHeight()
- {
- return combo.getItemHeight();
- }
-
- public String[] getItems()
- {
- return combo.getItems();
- }
-
- @Override
- public Layout getLayout()
- {
- return combo.getLayout();
- }
-
- @Override
- public Object getLayoutData()
- {
- return combo.getLayoutData();
- }
-
- @Override
- public boolean getLayoutDeferred()
- {
- return combo.getLayoutDeferred();
- }
-
- @Override
- public Point getLocation()
- {
- return combo.getLocation();
- }
-
- @Override
- public Menu getMenu()
- {
- return combo.getMenu();
- }
-
- @Override
- public Monitor getMonitor()
- {
- return combo.getMonitor();
- }
-
- @Override
- public Composite getParent()
- {
- return combo.getParent();
- }
-
- public Point getSelection()
- {
- return combo.getSelection();
- }
-
- public int getSelectionIndex()
- {
- return combo.getSelectionIndex();
- }
-
- @Override
- public Shell getShell()
- {
- return combo.getShell();
- }
-
- @Override
- public Point getSize()
- {
- return combo.getSize();
- }
-
- @Override
- public int getStyle()
- {
- return combo.getStyle();
- }
-
- @Override
- public Control[] getTabList()
- {
- return combo.getTabList();
- }
-
- public String getText()
- {
- return combo.getText();
- }
-
- public int getTextHeight()
- {
- return combo.getTextHeight();
- }
-
- public int getTextLimit()
- {
- return combo.getTextLimit();
- }
-
- @Override
- public String getToolTipText()
- {
- return combo.getToolTipText();
- }
-
- @Override
- public ScrollBar getVerticalBar()
- {
- return combo.getVerticalBar();
- }
-
- @Override
- public boolean getVisible()
- {
- return combo.getVisible();
- }
-
- public int getVisibleItemCount()
- {
- return combo.getVisibleItemCount();
- }
-
- @Override
- public int hashCode()
- {
- return combo.hashCode();
- }
-
- public int indexOf(String string, int start)
- {
- return combo.indexOf(string, start);
- }
-
- public int indexOf(String string)
- {
- return combo.indexOf(string);
- }
-
- @Override
- public void internal_dispose_GC(int hdc, GCData data)
- {
- combo.internal_dispose_GC(hdc, data);
- }
-
- @Override
- public int internal_new_GC(GCData data)
- {
- return combo.internal_new_GC(data);
- }
-
- @Override
- public boolean isDisposed()
- {
- return combo.isDisposed();
- }
-
- @Override
- public boolean isEnabled()
- {
- return combo.isEnabled();
- }
-
- @Override
- public boolean isFocusControl()
- {
- return combo.isFocusControl();
- }
-
- @Override
- public boolean isLayoutDeferred()
- {
- return combo.isLayoutDeferred();
- }
-
- @Override
- public boolean isListening(int eventType)
- {
- return combo.isListening(eventType);
- }
-
- @Override
- public boolean isReparentable()
- {
- return combo.isReparentable();
- }
-
- @Override
- public boolean isVisible()
- {
- return combo.isVisible();
- }
-
- @Override
- public void layout()
- {
- combo.layout();
- }
-
- @Override
- public void layout(boolean changed, boolean all)
- {
- combo.layout(changed, all);
- }
-
- @Override
- public void layout(boolean changed)
- {
- combo.layout(changed);
- }
-
- @Override
- public void layout(Control[] changed)
- {
- combo.layout(changed);
- }
-
- @Override
- public void moveAbove(Control control)
- {
- combo.moveAbove(control);
- }
-
- @Override
- public void moveBelow(Control control)
- {
- combo.moveBelow(control);
- }
-
- @Override
- public void notifyListeners(int eventType, Event event)
- {
- combo.notifyListeners(eventType, event);
- }
-
- @Override
- public void pack()
- {
- combo.pack();
- }
-
- @Override
- public void pack(boolean changed)
- {
- combo.pack(changed);
- }
-
- public void paste()
- {
- combo.paste();
- }
-
- @Override
- public void redraw()
- {
- combo.redraw();
- }
-
- @Override
- public void redraw(int x, int y, int width, int height, boolean all)
- {
- combo.redraw(x, y, width, height, all);
- }
-
- public void remove(int start, int end)
- {
- combo.remove(start, end);
- }
-
- public void remove(int index)
- {
- combo.remove(index);
- }
-
- public void remove(String string)
- {
- combo.remove(string);
- }
-
- public void removeAll()
- {
- combo.removeAll();
- }
-
- @Override
- public void removeControlListener(ControlListener listener)
- {
- combo.removeControlListener(listener);
- }
-
- @Override
- public void removeDisposeListener(DisposeListener listener)
- {
- combo.removeDisposeListener(listener);
- }
-
- @Override
- public void removeDragDetectListener(DragDetectListener listener)
- {
- combo.removeDragDetectListener(listener);
- }
-
- @Override
- public void removeFocusListener(FocusListener listener)
- {
- combo.removeFocusListener(listener);
- }
-
- @Override
- public void removeHelpListener(HelpListener listener)
- {
- combo.removeHelpListener(listener);
- }
-
- @Override
- public void removeKeyListener(KeyListener listener)
- {
- combo.removeKeyListener(listener);
- }
-
- @Override
- public void removeListener(int eventType, Listener listener)
- {
- combo.removeListener(eventType, listener);
- }
-
- @Override
- public void removeMenuDetectListener(MenuDetectListener listener)
- {
- combo.removeMenuDetectListener(listener);
- }
-
- public void removeModifyListener(ModifyListener listener)
- {
- combo.removeModifyListener(listener);
- }
-
- @Override
- public void removeMouseListener(MouseListener listener)
- {
- combo.removeMouseListener(listener);
- }
-
- @Override
- public void removeMouseMoveListener(MouseMoveListener listener)
- {
- combo.removeMouseMoveListener(listener);
- }
-
- @Override
- public void removeMouseTrackListener(MouseTrackListener listener)
- {
- combo.removeMouseTrackListener(listener);
- }
-
- @Override
- public void removeMouseWheelListener(MouseWheelListener listener)
- {
- combo.removeMouseWheelListener(listener);
- }
-
- @Override
- public void removePaintListener(PaintListener listener)
- {
- combo.removePaintListener(listener);
- }
-
- public void removeSelectionListener(SelectionListener listener)
- {
- combo.removeSelectionListener(listener);
- }
-
- @Override
- public void removeTraverseListener(TraverseListener listener)
- {
- combo.removeTraverseListener(listener);
- }
-
- public void removeVerifyListener(VerifyListener listener)
- {
- combo.removeVerifyListener(listener);
- }
-
- public void select(int index)
- {
- combo.select(index);
- }
-
- @Override
- public void setBackground(Color color)
- {
- combo.setBackground(color);
- }
-
- @Override
- public void setBackgroundImage(Image image)
- {
- combo.setBackgroundImage(image);
- }
-
- @Override
- public void setBackgroundMode(int mode)
- {
- combo.setBackgroundMode(mode);
- }
-
- @Override
- public void setBounds(int x, int y, int width, int height)
- {
- combo.setBounds(x, y, width, height);
- }
-
- @Override
- public void setBounds(Rectangle rect)
- {
- combo.setBounds(rect);
- }
-
- @Override
- public void setCapture(boolean capture)
- {
- combo.setCapture(capture);
- }
-
- @Override
- public void setCursor(Cursor cursor)
- {
- combo.setCursor(cursor);
- }
-
- @Override
- public void setData(Object data)
- {
- combo.setData(data);
- }
-
- @Override
- public void setData(String key, Object value)
- {
- combo.setData(key, value);
- }
-
- @Override
- public void setDragDetect(boolean dragDetect)
- {
- combo.setDragDetect(dragDetect);
- }
-
- public void setEditable(boolean editable)
- {
- combo.setEditable(editable);
- }
-
- @Override
- public void setEnabled(boolean enabled)
- {
- combo.setEnabled(enabled);
- }
-
- @Override
- public boolean setFocus()
- {
- return combo.setFocus();
- }
-
- @Override
- public void setFont(Font font)
- {
- combo.setFont(font);
- }
-
- @Override
- public void setForeground(Color color)
- {
- combo.setForeground(color);
- }
-
- public void setItem(int index, String string)
- {
- combo.setItem(index, string);
- }
-
- public void setItems(String[] items)
- {
- combo.setItems(items);
- }
-
- @Override
- public void setLayout(Layout layout)
- {
- combo.setLayout(layout);
- }
-
- @Override
- public void setLayoutData(Object layoutData)
- {
- combo.setLayoutData(layoutData);
- }
-
- @Override
- public void setLayoutDeferred(boolean defer)
- {
- combo.setLayoutDeferred(defer);
- }
-
- @Override
- public void setLocation(int x, int y)
- {
- combo.setLocation(x, y);
- }
-
- @Override
- public void setLocation(Point location)
- {
- combo.setLocation(location);
- }
-
- @Override
- public void setMenu(Menu menu)
- {
- combo.setMenu(menu);
- }
-
- @Override
- public boolean setParent(Composite parent)
- {
- return combo.setParent(parent);
- }
-
- @Override
- public void setRedraw(boolean redraw)
- {
- combo.setRedraw(redraw);
- }
-
- public void setSelection(Point selection)
- {
- combo.setSelection(selection);
- }
-
- @Override
- public void setSize(int width, int height)
- {
- combo.setSize(width, height);
- }
-
- @Override
- public void setSize(Point size)
- {
- combo.setSize(size);
- }
-
- @Override
- public void setTabList(Control[] tabList)
- {
- combo.setTabList(tabList);
- }
-
- public void setText(String string)
- {
- combo.setText(string);
- }
-
- public void setTextLimit(int limit)
- {
- combo.setTextLimit(limit);
- }
-
- @Override
- public void setToolTipText(String string)
- {
- combo.setToolTipText(string);
- }
-
- @Override
- public void setVisible(boolean visible)
- {
- combo.setVisible(visible);
- }
-
- public void setVisibleItemCount(int count)
- {
- combo.setVisibleItemCount(count);
- }
-
- @Override
- public Point toControl(int x, int y)
- {
- return combo.toControl(x, y);
- }
-
- @Override
- public Point toControl(Point point)
- {
- return combo.toControl(point);
- }
-
- @Override
- public Point toDisplay(int x, int y)
- {
- return combo.toDisplay(x, y);
- }
-
- @Override
- public Point toDisplay(Point point)
- {
- return combo.toDisplay(point);
- }
-
- @Override
- public String toString()
- {
- return combo.toString();
- }
-
- @Override
- public boolean traverse(int traversal)
- {
- return combo.traverse(traversal);
- }
-
- @Override
- public void update()
- {
- combo.update();
- }
-}
diff --git a/plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/ui/widgets/HistoryText.java b/plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/ui/widgets/HistoryText.java
new file mode 100644
index 0000000..0cb2451
--- /dev/null
+++ b/plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/ui/widgets/HistoryText.java
@@ -0,0 +1,246 @@
+/***************************************************************************
+ * Copyright (c) 2004 - 2007 Eike Stepper, Germany.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.net4j.ui.widgets;
+
+import org.eclipse.net4j.internal.ui.bundle.OM;
+import org.eclipse.net4j.ui.UIUtil;
+import org.eclipse.net4j.util.ReflectUtil;
+import org.eclipse.net4j.util.StringUtil;
+import org.eclipse.net4j.util.collection.IHistory;
+import org.eclipse.net4j.util.collection.IHistoryChangeEvent;
+import org.eclipse.net4j.util.collection.IHistoryElement;
+import org.eclipse.net4j.util.event.IEvent;
+import org.eclipse.net4j.util.event.IListener;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CCombo;
+import org.eclipse.swt.events.KeyAdapter;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.events.VerifyListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Text;
+
+import java.lang.reflect.Method;
+
+/**
+ * @author Eike Stepper
+ */
+public class HistoryText extends Composite
+{
+ private IHistory<String> history;
+
+ private CCombo combo;
+
+ private Method droppedMethod;
+
+ private IListener historyListener = new IListener()
+ {
+ public void notifyEvent(IEvent event)
+ {
+ if (event instanceof IHistoryChangeEvent)
+ {
+ historyChanged();
+ }
+ }
+ };
+
+ public HistoryText(Composite parent, int comboStyle, IHistory<String> history)
+ {
+ super(parent, SWT.NONE);
+ setLayout(UIUtil.createGridLayout(1));
+
+ combo = createCombo(comboStyle);
+ combo.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+
+ try
+ {
+ droppedMethod = combo.getClass().getDeclaredMethod("isDropped", ReflectUtil.NO_PARAMETERS);
+ droppedMethod.setAccessible(true);
+ }
+ catch (Exception ex)
+ {
+ OM.LOG.error(ex);
+ }
+
+ this.history = history;
+ historyChanged();
+ history.addListener(historyListener);
+ }
+
+ public IHistory<String> getHistory()
+ {
+ return history;
+ }
+
+ public CCombo getCombo()
+ {
+ return combo;
+ }
+
+ @Override
+ public void dispose()
+ {
+ history.removeListener(historyListener);
+ super.dispose();
+ }
+
+ public void addModifyListener(ModifyListener listener)
+ {
+ combo.addModifyListener(listener);
+ }
+
+ public void addSelectionListener(SelectionListener listener)
+ {
+ combo.addSelectionListener(listener);
+ }
+
+ public void addVerifyListener(VerifyListener listener)
+ {
+ combo.addVerifyListener(listener);
+ }
+
+ public void append(String string)
+ {
+ combo.setText(combo.getText() + string);
+ }
+
+ public void clearSelection()
+ {
+ combo.clearSelection();
+ }
+
+ public void copy()
+ {
+ combo.copy();
+ }
+
+ public void cut()
+ {
+ combo.cut();
+ }
+
+ public int getCharCount()
+ {
+ return combo.getText().length();
+ }
+
+ public int getLineCount()
+ {
+ return StringUtil.occurrences(combo.getText(), getLineDelimiter()) + 1;
+ }
+
+ public String getLineDelimiter()
+ {
+ return Text.DELIMITER;
+ }
+
+ public int getLineHeight()
+ {
+ return combo.getTextHeight();
+ }
+
+ public String getText()
+ {
+ return combo.getText();
+ }
+
+ public int getTextLimit()
+ {
+ return combo.getTextLimit();
+ }
+
+ public void paste()
+ {
+ combo.paste();
+ }
+
+ public void removeModifyListener(ModifyListener listener)
+ {
+ combo.removeModifyListener(listener);
+ }
+
+ public void removeSelectionListener(SelectionListener listener)
+ {
+ combo.removeSelectionListener(listener);
+ }
+
+ public void removeVerifyListener(VerifyListener listener)
+ {
+ combo.removeVerifyListener(listener);
+ }
+
+ public void setText(String string)
+ {
+ combo.setText(string);
+ }
+
+ public void setTextLimit(int limit)
+ {
+ combo.setTextLimit(limit);
+ }
+
+ public boolean isDropped()
+ {
+ if (droppedMethod != null)
+ {
+ try
+ {
+ return (Boolean)droppedMethod.invoke(combo, ReflectUtil.NO_ARGUMENTS);
+ }
+ catch (Exception ex)
+ {
+ OM.LOG.error(ex);
+ }
+ }
+
+ return false;
+ }
+
+ protected void historyChanged()
+ {
+ combo.removeAll();
+ for (IHistoryElement<String> element : history)
+ {
+ combo.add(element.getData());
+ }
+
+ String mostRecent = history.getMostRecent();
+ if (mostRecent != null)
+ {
+ setText(mostRecent);
+ }
+ }
+
+ protected CCombo createCombo(int style)
+ {
+ final CCombo combo = new CCombo(this, style);
+ combo.addKeyListener(new KeyAdapter()
+ {
+ @Override
+ public void keyPressed(KeyEvent event)
+ {
+ if (event.character == SWT.DEL && event.stateMask == 0 && isDropped())
+ {
+ int index = combo.getSelectionIndex();
+ if (index != -1)
+ {
+ history.remove(index);
+ }
+ }
+ }
+ });
+
+ return combo;
+ }
+}
diff --git a/plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/ui/widgets/HistoryView.java b/plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/ui/widgets/HistoryView.java
new file mode 100644
index 0000000..bd6d516
--- /dev/null
+++ b/plugins/org.eclipse.net4j.ui/src/org/eclipse/net4j/ui/widgets/HistoryView.java
@@ -0,0 +1,66 @@
+/***************************************************************************
+ * Copyright (c) 2004 - 2007 Eike Stepper, Germany.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.net4j.ui.widgets;
+
+import org.eclipse.net4j.internal.ui.bundle.OM;
+import org.eclipse.net4j.ui.UIUtil;
+import org.eclipse.net4j.util.collection.HistoryUtil;
+import org.eclipse.net4j.util.collection.IHistory;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.part.ViewPart;
+
+/**
+ * @author Eike Stepper
+ */
+public class HistoryView extends ViewPart
+{
+ public static final IHistory<String> HISTORY = HistoryUtil.createPreferenceHistory(OM.PREF_HISTORY);
+
+ private HistoryText control;
+
+ public HistoryView()
+ {
+ }
+
+ @Override
+ public void createPartControl(Composite parent)
+ {
+ Composite composite = UIUtil.createGridComposite(parent, 2);
+ control = new HistoryText(composite, SWT.NONE, HISTORY);
+ control.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, true));
+ Button button = new Button(composite, SWT.PUSH);
+ button.setText("Use");
+ button.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, true));
+ button.addSelectionListener(new SelectionAdapter()
+ {
+ @Override
+ public void widgetSelected(SelectionEvent e)
+ {
+ HISTORY.add(control.getText());
+ }
+ });
+ }
+
+ @Override
+ public void setFocus()
+ {
+ if (control != null)
+ {
+ control.setFocus();
+ }
+ }
+}
diff --git a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/collection/History.java b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/collection/History.java
index 50e08ef..b2aa700 100644
--- a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/collection/History.java
+++ b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/collection/History.java
@@ -119,33 +119,47 @@ public class History<T> extends Notifier implements IHistory<T>
return true;
}
- public IHistoryElement<T>[] toArray()
+ public T getMostRecent()
{
- lazyLoad();
- return elements.toArray(new IHistoryElement[elements.size()]);
+ if (isEmpty())
+ {
+ return null;
+ }
+
+ return elements.get(0).getData();
}
- public T[] getData()
+ public <D> D[] getData(D[] a)
{
int size = elements.size();
- Object[] array = new Object[size];
+ if (a.length < size)
+ {
+ a = (D[])java.lang.reflect.Array.newInstance(a.getClass().getComponentType(), size);
+ }
+
for (int i = 0; i < size; i++)
{
- array[i] = elements.get(i).getData();
+ a[i] = (D)elements.get(i).getData();
+ }
+
+ if (a.length > size)
+ {
+ a[size] = null;
}
- return (T[])array;
+ return a;
}
- public Iterator<IHistoryElement<T>> iterator()
+ public IHistoryElement<T>[] toArray()
{
lazyLoad();
- return elements.iterator();
+ return elements.toArray(new IHistoryElement[elements.size()]);
}
- public void dispose()
+ public Iterator<IHistoryElement<T>> iterator()
{
- elements.clear();
+ lazyLoad();
+ return elements.iterator();
}
protected IHistoryElement<T> createElement(T data)
diff --git a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/collection/PreferenceHistory.java b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/collection/PreferenceHistory.java
index 770ec23..5e2c3d9 100644
--- a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/collection/PreferenceHistory.java
+++ b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/collection/PreferenceHistory.java
@@ -32,7 +32,8 @@ public class PreferenceHistory extends History<String>
@Override
protected void load()
{
- for (String data : preference.getValue())
+ String[] value = preference.getValue();
+ for (String data : value)
{
internalAdd(data);
}
@@ -41,6 +42,7 @@ public class PreferenceHistory extends History<String>
@Override
protected void save()
{
- preference.setValue(getData());
+ String[] array = getData(new String[size()]);
+ preference.setValue(array);
}
}
diff --git a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/om/pref/Preference.java b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/om/pref/Preference.java
index 411e66d..2084386 100644
--- a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/om/pref/Preference.java
+++ b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/om/pref/Preference.java
@@ -100,7 +100,14 @@ public abstract class Preference<T> implements OMPreference<T>
protected void init(String value)
{
- this.value = convert(value);
+ if (value == null)
+ {
+ this.value = defaultValue;
+ }
+ else
+ {
+ this.value = convert(value);
+ }
}
protected abstract T convert(String value);
diff --git a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/om/pref/Preferences.java b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/om/pref/Preferences.java
index 5cbf89d..b54ed07 100644
--- a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/om/pref/Preferences.java
+++ b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/internal/util/om/pref/Preferences.java
@@ -54,10 +54,11 @@ public class Preferences extends Notifier implements OMPreferences
if (!loaded)
{
loaded = true;
+ final Properties properties = new Properties();
+
File file = getFile();
if (file.exists())
{
- final Properties properties = new Properties();
IOUtil.input(file, new IORunnable<FileInputStream>()
{
public void run(FileInputStream io) throws IOException
@@ -65,16 +66,13 @@ public class Preferences extends Notifier implements OMPreferences
properties.load(io);
}
});
+ }
- for (Preference preference : prefs.values())
- {
- String name = preference.getName();
- String value = properties.getProperty(name);
- if (value != null)
- {
- preference.init(value);
- }
- }
+ for (Preference preference : prefs.values())
+ {
+ String name = preference.getName();
+ String value = properties.getProperty(name);
+ preference.init(value);
}
}
}
diff --git a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/StringUtil.java b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/StringUtil.java
index 917a820..4e5df28 100644
--- a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/StringUtil.java
+++ b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/StringUtil.java
@@ -103,6 +103,17 @@ public final class StringUtil
return count;
}
+ public static int occurrences(String str, String c)
+ {
+ int count = 0;
+ for (int i = 0; (i = str.indexOf(c, i)) != -1; i += c.length())
+ {
+ ++count;
+ }
+
+ return count;
+ }
+
public static boolean isEmpty(String str)
{
return str == null || str.length() == 0;
diff --git a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/collection/IHistory.java b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/collection/IHistory.java
index 3e05d75..f2ead8f 100644
--- a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/collection/IHistory.java
+++ b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/collection/IHistory.java
@@ -31,9 +31,9 @@ public interface IHistory<T> extends INotifier, Iterable<IHistoryElement<T>>
public IHistoryElement<T> get(int index);
- public IHistoryElement<T>[] toArray();
+ public T getMostRecent();
- public T[] getData();
+ public <D> D[] getData(D[] a);
- public void dispose();
+ public IHistoryElement<T>[] toArray();
}