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

Reply via email to