This is the code that I've using ( it's a part of more complex one ).
package es.git.openkm.errorgwt.client;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.ui.DockPanel;
import com.google.gwt.user.client.ui.RootPanel;
import es.git.openkm.errorgwt.client.widget.VerticalBar;
public final class Main implements EntryPoint {
// Main panel declaration
public DockPanel mainPanel;
// Other panel declaration
private VerticalBar verticalBarPanel;
public void onModuleLoad() {
// Initialize panels
mainPanel = new DockPanel();
verticalBarPanel = new VerticalBar();
//Set size panels
mainPanel.setSize(""+400,""+400);
verticalBarPanel.setSize(""+17,""+400);
mainPanel.add(verticalBarPanel,DockPanel.WEST);
RootPanel.get().add(mainPanel);
}
}
package es.git.openkm.errorgwt.client.widget;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.MouseListener;
import com.google.gwt.user.client.ui.Widget;
public class VerticalBar extends Composite implements MouseListener {
private Label label;
public VerticalBar(){
label = new Label();
label.setStyleName("okm-VerticalBar");
label.addMouseListener(this);
setWidget(label);
}
public void onMouseDown(Widget sender, int x, int y){
int height = 400;
new
PopupVerticalBar(label.getAbsoluteLeft(),label.getAbsoluteTop(),height).show();
}
public void onMouseEnter(Widget sender){
}
public void onMouseLeave(Widget sender){
}
public void onMouseMove(Widget sender, int x, int y){
}
public void onMouseUp(Widget sender, int x, int y){
}
}
package es.git.openkm.errorgwt.client.widget;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.MouseListener;
import com.google.gwt.user.client.ui.PopupPanel;
import com.google.gwt.user.client.ui.Widget;
public class PopupVerticalBar extends Composite implements
MouseListener {
private PopupPanel popup;
private int labelSize = 97;
private int transparentLabelSize = 40;
private int x = 0;
private int y = 0;
private int dragStartX;
private int dragStartY;
boolean dragging = false;
public PopupVerticalBar(int x, int y, int height) {
// Establishes false to non auto-close when click outside
popup = new PopupPanel(false);
// The label is an image transparent + colorized + transparent
this.x = x-transparentLabelSize;
popup.setWidth(String.valueOf(labelSize));
popup.setHeight(""+height);
popup.setStyleName("okm-Popup-VerticalBar");
Label label = new Label("");
label.setHeight(""+height);
label.setWidth(""+labelSize);
label.setStyleName("okm-label-VerticalBar");
popup.add(label);
popup.setPopupPosition(this.x,0);
label.addMouseListener(this);
setWidget(popup);
dragging = true;
dragStartX = x;
dragStartY = y;
}
public void onMouseDown(Widget sender, int x, int y){
}
public void onMouseEnter(Widget sender){
}
public void onMouseLeave(Widget sender){
popup.hide();
}
public void onMouseMove(Widget sender, int x, int y){
if (dragging) {
int absX = x + getAbsoluteLeft();
popup.setPopupPosition(absX - dragStartX, 50);
}
}
public void onMouseUp(Widget sender, int x, int y){
dragging = false;
int absX = x + getAbsoluteLeft();
popup.setPopupPosition(absX - dragStartX, 0);
//Main.get().verticalResize(absX - dragStartX+40);
popup.hide();
}
public void show(){
popup.show();
}
}
style.css
body {margin: 0px; }
body,td,a,div,.p {font-size: 10px; font-family: arial,sans-serif}
div,td {color: #000000}
a:link,.w,.w a:link {color: #0000cc}
a:visited {color: #551a8b}
a:active {color: #ff0000}
/* VerticalBar */
.okm-VerticalBar {
background-color:blue;
cursor:col-resize;
}
.okm-Popup-VerticalBar {
background-color:red;
cursor:col-resize;
}
.okm-label-VerticalBar {
background-color:red;
cursor:col-resize;
}
Thanks.
[ERROR] Uncaught exception escaped
java.lang.RuntimeException: JavaScript method
'@com.google.gwt.user.client.ui.impl.PopupImplIE6::setWidth(Lcom/google/gwt/user/client/Element;Ljava/lang/String;)'
threw an exception
at
com.google.gwt.dev.shell.ie.ModuleSpaceIE6.invokeNative(ModuleSpaceIE6.java:394)
at
com.google.gwt.dev.shell.ie.ModuleSpaceIE6.invokeNativeVoid(ModuleSpaceIE6.java:283)
at
com.google.gwt.dev.shell.JavaScriptHost.invokeNativeVoid(JavaScriptHost.java:127)
at
com.google.gwt.user.client.ui.impl.PopupImplIE6.setWidth(PopupImplIE6.java:58)
at
com.google.gwt.user.client.ui.PopupPanel.setWidth(PopupPanel.java:198)
at
es.git.openkm.frontend.client.widget.ErrorPopup.<init>(ErrorPopup.java:27)
at
es.git.openkm.frontend.client.widget.DirectoryTree$1.onFailure(DirectoryTree.java:92)
at
es.git.openkm.frontend.client.service.OKMFolderService_Proxy$4.onCompletionImpl(transient
source for
es.git.openkm.frontend.client.service.OKMFolderService_Proxy:266)
at
es.git.openkm.frontend.client.service.OKMFolderService_Proxy$4.onCompletionAndCatch(transient
source for
es.git.openkm.frontend.client.service.OKMFolderService_Proxy:238)
at
es.git.openkm.frontend.client.service.OKMFolderService_Proxy$4.onCompletion(transient
source for
es.git.openkm.frontend.client.service.OKMFolderService_Proxy:232)
at
com.google.gwt.dev.shell.InstanceJavaDispatch.callMethod(InstanceJavaDispatch.java:40)
Caused by: com.google.gwt.core.client.JavaScriptException: JavaScript
TypeError exception: 'children.1.style' es nulo o no es un objeto
at
com.google.gwt.dev.shell.ModuleSpace.createJavaScriptException(ModuleSpace.java:267)
at
com.google.gwt.dev.shell.ie.ModuleSpaceIE6.exceptionCaught(ModuleSpaceIE6.java:105)
at
com.google.gwt.dev.shell.JavaScriptHost.exceptionCaught(JavaScriptHost.java:31)
at
com.google.gwt.dev.shell.StaticJavaDispatch.callMethod(StaticJavaDispatch.java:45)
at
com.google.gwt.dev.shell.ie.IDispatchProxy.invoke(IDispatchProxy.java:127)
at
com.google.gwt.dev.shell.ie.IDispatchImpl.Invoke(IDispatchImpl.java:199)
at
com.google.gwt.dev.shell.ie.IDispatchImpl.method6(IDispatchImpl.java:108)
at
org.eclipse.swt.internal.ole.win32.COMObject.callback6(COMObject.java:117)
at
org.eclipse.swt.internal.ole.win32.IDispatch.Invoke(IDispatch.java:64)
at
org.eclipse.swt.ole.win32.OleAutomation.invoke(OleAutomation.java:487)
On IE first mus be added object to popup before to make setWidth or
setStyleName ...