Skip to main content



      Home
Home » Eclipse Projects » NatTable » CellEditor on DoubleCLick?
CellEditor on DoubleCLick? [message #1007877] Thu, 07 February 2013 16:53 Go to next message
Eclipse UserFriend
The cellEditor is triggered on leftclick now.
Is it possible to trigger it on double click?
Re: CellEditor on DoubleCLick? [message #1007911 is a reply to message #1007877] Fri, 08 February 2013 02:19 Go to previous messageGo to next message
Eclipse UserFriend
You need to register your own edit bindings. By default the DefaultEditBindings are registered via DefaultGridLayerConfiguration. And there the edit actions are binded against the first single click. You need to change this to registerFirstDoubleClickBinding(), then it should only open on double click. Remember that you have to avoid registering the default configuration.
Re: CellEditor on DoubleCLick? [message #1007913 is a reply to message #1007877] Fri, 08 February 2013 02:29 Go to previous messageGo to next message
Eclipse UserFriend
Try something like this:

addConfiguration(new DefaultEditBindings() {

	@Override
	public void configureUiBindings(UiBindingRegistry pUiBindingRegistry) {
		BodyCellEditorMouseEventMatcher mouseEventMatcher = new BodyCellEditorMouseEventMatcher(
				DelegatingCellEditor.class) {

			@Override
			public boolean matches(NatTable pNatTable,
					MouseEvent pEvent, LabelStack pRegionLabels) {
				if (pEvent != null && pEvent.button == 1) {
					return super.matches(pNatTable, pEvent,
							pRegionLabels);
				}
				return false;
			}

		};
		pUiBindingRegistry.registerDoubleClickBinding(
				mouseEventMatcher, new MouseEditAction());
		pUiBindingRegistry.registerFirstMouseDragMode(
				mouseEventMatcher, new CellEditDragMode());
		
		pUiBindingRegistry.registerKeyBinding(new SpecialCharacterKeyEventMatcher(),  new SpecialCharacterKeyEditAction());
		
		
	}

});


Cheers

Alex
Re: CellEditor on DoubleCLick? [message #1007936 is a reply to message #1007911] Fri, 08 February 2013 05:19 Go to previous messageGo to next message
Eclipse UserFriend
Thnx Dirk!
Thnx Alexander , it was very helpful!

[Updated on: Tue, 12 February 2013 11:31] by Moderator

Re: CellEditor on DoubleCLick? [message #1690370 is a reply to message #1007936] Thu, 26 March 2015 18:34 Go to previous messageGo to next message
Eclipse UserFriend
Hi everyone
I would also like to have cell editor triggered on double-click, not single-click.

I tried to incorporate the above code fragment into my code, but confused by the "DelegatingCellEditor", "SpecialCharacterKeyEventMatcher", and "SpecialCharacterKeyEditAction".
Using NatTable 1.2.0 so maybe the above no longer appropriate?

Any help or hints much appreciated.
Many thanks Smile
Re: CellEditor on DoubleCLick? [message #1690500 is a reply to message #1690370] Fri, 27 March 2015 12:12 Go to previous messageGo to next message
Eclipse UserFriend
Those classes were never part of NatTable. Those SpecialXxx classes seem to be used for activating editors on pressing special keys. The delegating class seems to wrap and combine several editors so you only need one configuration. Not sure if this is still needed.
Re: CellEditor on DoubleCLick? [message #1690707 is a reply to message #1690500] Mon, 30 March 2015 13:36 Go to previous messageGo to next message
Eclipse UserFriend
Hi Dirk

Many thanks for the reply.
I pared-down the code to the following, but still get edit on single-click but now after short delay (presume to check was not double-click?).
Maybe previous bindings need unregistering first? If so how do I find out what they are?

addConfiguration( new DefaultEditBindings()
    {

      @Override
      public void configureUiBindings( UiBindingRegistry uiBindingRegistry )
      {

        uiBindingRegistry.registerDoubleClickBinding( new CellEditorMouseEventMatcher(), new MouseEditAction() );
        uiBindingRegistry.registerFirstMouseDragMode( new CellEditorMouseEventMatcher(), new CellEditDragMode() );

      }

    } );


Any help appreciated. Apologies if the questions are bit stupid!

PS. Congratulations on releasing NatTable 1.3.0 ! I will try it soon Smile
Re: CellEditor on DoubleCLick? [message #1690717 is a reply to message #1690707] Mon, 30 March 2015 15:30 Go to previous messageGo to next message
Eclipse UserFriend
Are you using the GridLayer with default configuration turned on? There the DefaultEditBindings are registered. In that case you just add another set of bindings.
Re: CellEditor on DoubleCLick? [message #1691182 is a reply to message #1690717] Thu, 02 April 2015 18:14 Go to previous messageGo to next message
Eclipse UserFriend
Still not managed to get it work.

Based on your comment "just add another set of bindings" this is my latest attempt.
    // create grid layer composite
    GridLayer grid = new GridLayer( viewport, colHeader, rowHeader, corner );

    // configure NatTable with grid, theme, and labels
    setLayer( grid );
    addConfiguration( m_theme );  // just slightly modified modern theme
    addConfiguration( m_labels );  // labels for style and enabling editing etc

    addConfiguration( new XEditBindings() );  // *** try to have cell editor on double-click ***

    configure();


Where XEditBindings is (based on DefaultEditBindings)
public class XEditBindings extends AbstractUiBindingConfiguration
{

  @Override
  public void configureUiBindings( UiBindingRegistry uiBindingRegistry )
  {
    // configure the space key to activate a cell editor via keyboard
    // this is especially useful for changing the value for a checkbox
    uiBindingRegistry.registerKeyBinding( new KeyEventMatcher( SWT.NONE, 32 ), new KeyEditAction() );
    uiBindingRegistry.registerKeyBinding( new KeyEventMatcher( SWT.NONE, SWT.F2 ), new KeyEditAction() );
    uiBindingRegistry.registerKeyBinding( new LetterOrDigitKeyEventMatcher(), new KeyEditAction() );
    uiBindingRegistry.registerKeyBinding( new LetterOrDigitKeyEventMatcher( SWT.SHIFT ), new KeyEditAction() );

    uiBindingRegistry.registerDoubleClickBinding( new CellEditorMouseEventMatcher( GridRegion.BODY ),
        new MouseEditAction() );

    uiBindingRegistry.registerSingleClickBinding( new CellEditorMouseEventMatcher( GridRegion.BODY ),
        new SelectCellAction() );

    uiBindingRegistry.registerMouseDragMode( new CellEditorMouseEventMatcher( GridRegion.BODY ),
        new CellSelectionDragMode() );

    uiBindingRegistry.registerFirstSingleClickBinding( new CellPainterMouseEventMatcher( GridRegion.BODY,
        MouseEventMatcher.LEFT_BUTTON, CheckBoxPainter.class ), new SelectCellAction() );

    uiBindingRegistry.registerFirstMouseDragMode( new CellPainterMouseEventMatcher( GridRegion.BODY,
        MouseEventMatcher.LEFT_BUTTON, CheckBoxPainter.class ), new CellSelectionDragMode() );
  }
}


Cells on single click get selected fine, then after about quarter-of-second the cell editor starts!
Re: CellEditor on DoubleCLick? [message #1691192 is a reply to message #1691182] Fri, 03 April 2015 01:41 Go to previous messageGo to next message
Eclipse UserFriend
You are creating the GridLayer with the default configuration turned on. It needs to be turned off, since otherwise you have two edit bindings configured!

Regarding the delay. You register editing on double click and selection in single click. The system therefore waits if a double click happens. But selection is handled by the SelectionLayer configuration and it is triggered on mouseDown. There is no need for you to register that.
Re: CellEditor on DoubleCLick? [message #1691193 is a reply to message #1691192] Fri, 03 April 2015 02:12 Go to previous messageGo to next message
Eclipse UserFriend
To be more precise, create the GridLayer with autoconfigure = false and remove the binding for single click in your edit configuration.
Re: CellEditor on DoubleCLick? [message #1691217 is a reply to message #1691193] Fri, 03 April 2015 10:00 Go to previous message
Eclipse UserFriend
Excellent, many thanks Dirk - now all working correctly!

For others trying to do same thing he's my working code
    // create grid layer composite
    GridLayer grid = new GridLayer( viewport, colHeader, rowHeader, corner, false );
    grid.addConfiguration( new XGridLayerConfiguration() );

    // configure NatTable with grid, theme, and labels
    setLayer( grid );
    addConfiguration( m_theme );  // just slightly modified modern theme
    addConfiguration( m_labels );  // labels for style and enabling editing etc
    configure();

And
public class XGridLayerConfiguration extends AggregateConfiguration
{
  public XGridLayerConfiguration()
  {
    // add default editing handler config
    addConfiguration( new DefaultEditConfiguration() );

    // instead of default editing UI config "DefaultEditBindings"
    addConfiguration( new AbstractUiBindingConfiguration()
    {
      @Override
      public void configureUiBindings( UiBindingRegistry uiBindingRegistry )
      {
        uiBindingRegistry.registerKeyBinding( new KeyEventMatcher( SWT.NONE, SWT.F2 ), new KeyEditAction() );
        uiBindingRegistry.registerKeyBinding( new LetterOrDigitKeyEventMatcher(), new KeyEditAction() );
        uiBindingRegistry.registerKeyBinding( new LetterOrDigitKeyEventMatcher( SWT.SHIFT ), new KeyEditAction() );

        uiBindingRegistry.registerFirstDoubleClickBinding( new CellEditorMouseEventMatcher( GridRegion.BODY ),
            new MouseEditAction() );
      }
    } );

    // add default print UI bindings
    addConfiguration( new DefaultPrintBindings() );

    // add default excel export UI bindings
    addConfiguration( new DefaultExportBindings() );
  }

[Updated on: Fri, 03 April 2015 10:02] by Moderator

Previous Topic:Scroll listener?
Next Topic:column header with multiple rows
Goto Forum:
  


Current Time: Wed Jul 16 14:11:01 EDT 2025

Powered by FUDForum. Page generated in 0.32335 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top