|
Re: [CompositeTable] 0.9.2.1 released [message #30848 is a reply to message #26733] |
Tue, 06 March 2007 00:39 |
Snjezana Peco Messages: 789 Registered: July 2009 |
Senior Member |
|
|
David,
I have played with moving/resizing on Linux/GTK (CompositeTableSnippet5).
1) Moving
The Move event is skipped in the HeaderLayout$HeaderControlListener
class after the Resize event.
This doesn't work correctly on Linux/GTK.
This is the solution:
HeaderLayout$HeaderControlListener.java
private class HeaderControlListener implements ControlListener {
public void controlMoved(ControlEvent e) {
// Eat the move event that is fired after resize events
// on non-gtk platforms
if (! SWT.getPlatform().equals("gtk") && wasResized) {
wasResized = false;
return;
}
Table table = header.headerTable;
fireColumnMovedEvent(table.getColumnOrder());
storeLastWidths(table);
}
....
2) Resizing and showing
Linux/GTK (and XWindows) handles scrolling events in a specific way and
the solution which works on Windows, doesn't work on Linux.
There is a solution which, maybe, isn't elegant (extending Table), but
it works.
Linux/GTK supports non-scrollable tables. In order to create header (in
the constructor of the AbstractNativeHeader class),we can use the
following control instead of the SWT Table control:
package org.eclipse.swt.widgets;
import org.eclipse.swt.SWT;
public class GtkTableHeader extends Table {
int originalStyle;
public GtkTableHeader(Composite parent, int style) {
super(parent, style);
originalStyle = style;
}
protected void checkSubclass() {
}
void createWidget(int index) {
style = originalStyle;
style |= SWT.FULL_SELECTION;
style = checkBits(style, SWT.SINGLE, SWT.MULTI, 0, 0, 0, 0);
super.createWidget(index);
}
}
This class won't be compiled against win32 swt (win32 swt controls use
the createWidget() method instead of createWidget(int index)).
Regards,
Snjeza
David J. Orme wrote:
> 2/5/2007 Version 0.9.2.1. This is a development release to get new APIs
> out as quickly as possible.
>
> * Added delete handler method per John Ye's observation (thanks John)
> * Added DeleteAdapter to help implement IDeleteHandler
> * Added command API in preparation for having pluggable key bindings.
>
> Thanks to those who have been filing bug reports! It's really appreciated.
>
> I'm not able to get much time on Linux/GTK right now and there are some
> bugs in the column moving code and in the column resizing code on that
> platform. I also have *no* access to MacOS. If anyone has access to
> those platforms and can help debug on those platforms, everyone would
> really appreciate your help!
>
>
> Thanks much again to *everyone* around here. You all are great!
>
>
> Regards,
>
> Dave
>
|
|
|
Re: [CompositeTable] 0.9.2.1 released [message #579536 is a reply to message #26733] |
Tue, 06 March 2007 00:39 |
Snjezana Peco Messages: 789 Registered: July 2009 |
Senior Member |
|
|
David,
I have played with moving/resizing on Linux/GTK (CompositeTableSnippet5).
1) Moving
The Move event is skipped in the HeaderLayout$HeaderControlListener
class after the Resize event.
This doesn't work correctly on Linux/GTK.
This is the solution:
HeaderLayout$HeaderControlListener.java
private class HeaderControlListener implements ControlListener {
public void controlMoved(ControlEvent e) {
// Eat the move event that is fired after resize events
// on non-gtk platforms
if (! SWT.getPlatform().equals("gtk") && wasResized) {
wasResized = false;
return;
}
Table table = header.headerTable;
fireColumnMovedEvent(table.getColumnOrder());
storeLastWidths(table);
}
....
2) Resizing and showing
Linux/GTK (and XWindows) handles scrolling events in a specific way and
the solution which works on Windows, doesn't work on Linux.
There is a solution which, maybe, isn't elegant (extending Table), but
it works.
Linux/GTK supports non-scrollable tables. In order to create header (in
the constructor of the AbstractNativeHeader class),we can use the
following control instead of the SWT Table control:
package org.eclipse.swt.widgets;
import org.eclipse.swt.SWT;
public class GtkTableHeader extends Table {
int originalStyle;
public GtkTableHeader(Composite parent, int style) {
super(parent, style);
originalStyle = style;
}
protected void checkSubclass() {
}
void createWidget(int index) {
style = originalStyle;
style |= SWT.FULL_SELECTION;
style = checkBits(style, SWT.SINGLE, SWT.MULTI, 0, 0, 0, 0);
super.createWidget(index);
}
}
This class won't be compiled against win32 swt (win32 swt controls use
the createWidget() method instead of createWidget(int index)).
Regards,
Snjeza
David J. Orme wrote:
> 2/5/2007 Version 0.9.2.1. This is a development release to get new APIs
> out as quickly as possible.
>
> * Added delete handler method per John Ye's observation (thanks John)
> * Added DeleteAdapter to help implement IDeleteHandler
> * Added command API in preparation for having pluggable key bindings.
>
> Thanks to those who have been filing bug reports! It's really appreciated.
>
> I'm not able to get much time on Linux/GTK right now and there are some
> bugs in the column moving code and in the column resizing code on that
> platform. I also have *no* access to MacOS. If anyone has access to
> those platforms and can help debug on those platforms, everyone would
> really appreciate your help!
>
>
> Thanks much again to *everyone* around here. You all are great!
>
>
> Regards,
>
> Dave
>
|
|
|
Powered by
FUDForum. Page generated in 0.02776 seconds