Hi Benjamin, Matthias, developpers,
Nice to know there are great ideas to enhance OpenJUMP user interface.
Here are some comments about Benjamin's main points :
- windows docking : totally agree that it would be a nice addition
is infonode totally free and opensource ? anyway, there are also :
http://dock.javaforge.com/index.html
http://mydoggy.sourceforge.net/
http://code.google.com/p/vldocking/
- plugin system : no opinion, but it's a strategic part of OpenJUMP.
Could you explain what your system will add (capabilities ?, flexibility
? simplicity ?). One idea I had which may be related to the plugin
management is that OpenJUMP should be able to record plugin actions in
macros.
Did you compare OpenJUMP plugin or your plugin framework to
http://code.google.com/p/jspf/
https://sourceforge.net/projects/pffj/
http://code.google.com/p/jin-plugin/
- separation of UI and OJ core : agree with the main idea, even if it
seems quite difficult to me.
- various UI enhancement : I'm afraid by the addition of a new library
for each single enhancement. I agree some libraries can do a better job
than current OpenJUMP, but I think that keeping a small API and few
dependencies is one of the best chance for OpenJUMP to keep its place in
the OpenSource GIS ecosystem. If there is an external library able to
enhance every OJ swing components, I m in favour, if external libraries
are just needed for optional extensions, no problem, if several external
libraries are needed to enhance small parts of the UI, I'm not in favour.
- configurable keymap to execute plugins : good idea
- polyglot project java/groovy : I'm not a groovy user (just a beanshell
fan). I think a good enhancement would be to make scripting in any java
compatible sripting language easier. I'm not in favour of mixing java
and groovy in core parts of the project (or UI). But maybe you have
strong arguments, or maybe I misunderstood what you mean with "create a
polyglot project with Java and Groovy"
Anyway, I hope we'll get more feedback from other developpers to help
making good decisions.
Regards,
Michaël
Le 14/03/2011 17:11, Benjamin Gudehus a écrit :
btw: this is how the gui looks when I deactivate all plugins:
http://www.abload.de/img/nicejump_wo_pluginsq71j.png
I think this is a nice showcase of how to customize a scalable
user interface.
here is the corresponding source code for this:
static void main(args) {
Translation.reset()
Translation.addLanguageFilePath("src/main/nicejump/lang")
//Translation.loadLanguage("de")
def workbench = new Workbench()
def plugInManager = workbench.getPlugInManager()
// plugInManager.initializePlugIn(new ErrorHandlerPlugIn())
// plugInManager.initializePlugIn(new ProjectModulePlugIn())
// plugInManager.initializePlugIn(new MapPanelPlugIn())
// plugInManager.initializePlugIn(new ProjectPanelPlugIn())
// plugInManager.initializePlugIn(new EssentialModulePlugIn())
// plugInManager.initializePlugIn(new PropertiesPanelPlugIn())
// plugInManager.initializePlugIn(new PythonShellPlugIn())
workbench.startProgram()
}
--benjamin
2011/3/14 Benjamin Gudehus <hasteb...@googlemail.com
<mailto:hasteb...@googlemail.com>>
hallo Matthias!
it would be nice to incubate a new GUI in parallel work.
Maybe we could split the source code in two modules as I
already did:
* a workbench with a new gui built from scratch
* a core with current OJ code base
then substract the old workbench code (successively) from core and
replace it with the new one.
I did this previously to be able to experiment with a new
gui without worrying about the core parts of the old gui.
should be no problem to create a polyglot project with Java and
Groovy source code. only condition is that we use a distributed
vcs like Mercurial instead of Subversion.
Here are some quick lists for a possible GUI for OJ 2.0.
some random ideas:
* separate model from view
* dialogs editable in gui editor (e.g. JFormDesigner, Google
GUI Builder)
* MouseButtonFilterCompositeTool. left mouse button for an
arbitrary CursorTool, right mouse button for panning and
mouse wheel for zooming
* configurable keymap to execute plugins
frameworks/libraries I've already integrated in some way in an
OpenJUMP Extension or standalone:
* progress windows with Better Swing Application Framework
using the SwingWorker class
* dockable windows with InfoNode
* better attribute list panel with GlazedLists
* nicer dialogs with SwingX and JGoodies FormLayout
* standard message boxes (warning, information, question)
* selected features panel with Netbeans Nodes API
* attribute properties panel with Netbeans PropertiesPanel
* scripting editor and console with RSyntaxTextArea
An example dialog for a new attribute selection plugin dialog
(the one to the right):
http://h-7.abload.de/img/jump-attributauswahlgn7l.png
--Benjamin
2011/3/14 Matthias Scholz <m...@jammerhund.de <mailto:m...@jammerhund.de>>
Nice Work!
What do you think about a GUI revision for OJ in 2.0? This can
be a
longer project of parallel work. Should be no problem with
SVN. A more
modern and customizable GUI would be a great enhancement for
OJ in the
future. I know that this is not a small task.
Matthias
> Hi Michaël!
>
> The RCP has a new plugin system which (basically) consists of
>
> * a PlugIn class with initialize(PlugInContext) and an
execute method
> without parameters.
> * a PlugInContext class with getProgramModel(),
getProgramFrame() and
> getPlugInManager().
> * a PlugInManager class which stores initialized PlugIns and
provides
> them through getPlugIn(className)
> * a PlugInInstaller which is very similar to OpenJUMPs
FeatureInstaller.
>
> This system is -- as mentioned previously -- heavily
inspired by SPSP
> [1], completely written in Groovy and
> introduces backward incompatible changes.
>
> Thus an adapter plugin was created which forwards to a
> CompatPlugInContext that extends the PlugInContext
> of OpenJUMP.
>
> Here is an example of a adapter method:
>
> LayerViewPanel getLayerViewPanel() {
> def programModel =
this.niceJumpPlugInContext.getProgramModel()
> return programModel.getActiveProject().getLayerViewPanel()
> }
>
> There are plenty of PlugIn e.g. MapPanelPlugIn,
PropertiesPanelPlugIn,
> ErrorHandlerPlugIn,
> LoadDatasetPlugIn and LoadDatasetsDialogPlugIn.
>
> The main idea was to control the system through the PlugIn
provided by
> PlugInManager. I also was
> unhappy with the programmatic abilities with OpenJUMP. There
were many
> methods I wanted to
> use marked as private. Others imposed swing windows, so I
couldn't run
> them completely
> programmatically.
>
> Thats why loading datasets are two PlugIns:
LoadDatasetPlugIn provides
> a programmatic interface and
> LoadDatasetsDialogPlugIn uses the first plugin and opens a
swing file
> dialog.
>
> --Benjamin
>
>
> --Benjamin
>
> [1]
http://www.mail-archive.com/geotools-devel@lists.sourceforge.net/msg19621.html
>
> 2011/3/13 Michaël Michaud <michael.mich...@free.fr
<mailto:michael.mich...@free.fr>
> <mailto:michael.mich...@free.fr
<mailto:michael.mich...@free.fr>>>
>
> Hi,
>
> Nice work !
> There is surely a lot of work to transfer all the
improvements to
> the last version of OpenJUMP.
>
> What do you mean by running PlugIns from OpenJUMP with
the new
> plugin system ?
>
> Michaël
>
>
>
> Le 13/03/2011 21:05, Benjamin Gudehus a écrit :
>> Hi OpenJUMPers,
>>
>> I want to come up with some ideas for future work on the
>> user interface of OpenJUMP.
>>
>> In May 2010 I spent a week to implement a small RCP
inspired
>> by Landons Simple Pluggable Swing Program. I also
intergrated
>> a dockable window system using InfoNode.
>>
>> Here's a screenshot:
>> http://img2.imagebanana.com/img/924rj8w5/nicejumprcp.png
>>
>> As one can see I separated the CursorTools from the toolbar
>> to a new toolbar and added a selection window. I also
coded an
>> adapter to run PlugIns from OpenJUMP with the new
plugin system.
>>
>> There is pretty much to do and it is far from fully
functional.
>>
>> I'll eventually release the complete codebase, but
don't plan to
>> do this in the few next months. I haven't change a line of
>> code since May 2010, but it looks good, that I can spend
>> some weeks of work time in summer to improve it.
>>
>> Regards
>> Benjamin
>>
>>
>>
------------------------------------------------------------------------------
>> Colocation vs. Managed Hosting
>> A question and answer guide to determining the best fit
>> for your organization - today and in the future.
>> http://p.sf.net/sfu/internap-sfd2d
>>
>>
>> _______________________________________________
>> Jump-pilot-devel mailing list
>> Jump-pilot-devel@lists.sourceforge.net
<mailto:Jump-pilot-devel@lists.sourceforge.net>
<mailto:Jump-pilot-devel@lists.sourceforge.net
<mailto:Jump-pilot-devel@lists.sourceforge.net>>
>> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>>
>
>
>
------------------------------------------------------------------------------
> Colocation vs. Managed Hosting
> A question and answer guide to determining the best fit
> for your organization - today and in the future.
> http://p.sf.net/sfu/internap-sfd2d
> _______________________________________________
> Jump-pilot-devel mailing list
> Jump-pilot-devel@lists.sourceforge.net
<mailto:Jump-pilot-devel@lists.sourceforge.net>
> <mailto:Jump-pilot-devel@lists.sourceforge.net
<mailto:Jump-pilot-devel@lists.sourceforge.net>>
> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>
>
>
------------------------------------------------------------------------
>
>
------------------------------------------------------------------------------
> Colocation vs. Managed Hosting
> A question and answer guide to determining the best fit
> for your organization - today and in the future.
> http://p.sf.net/sfu/internap-sfd2d
>
------------------------------------------------------------------------
>
> _______________________________________________
> Jump-pilot-devel mailing list
> Jump-pilot-devel@lists.sourceforge.net
<mailto:Jump-pilot-devel@lists.sourceforge.net>
> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>
------------------------------------------------------------------------------
Colocation vs. Managed Hosting
A question and answer guide to determining the best fit
for your organization - today and in the future.
http://p.sf.net/sfu/internap-sfd2d
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
<mailto:Jump-pilot-devel@lists.sourceforge.net>
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
------------------------------------------------------------------------------
Colocation vs. Managed Hosting
A question and answer guide to determining the best fit
for your organization - today and in the future.
http://p.sf.net/sfu/internap-sfd2d
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
------------------------------------------------------------------------------
Colocation vs. Managed Hosting
A question and answer guide to determining the best fit
for your organization - today and in the future.
http://p.sf.net/sfu/internap-sfd2d
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel