/** * */ package org.semanticsoft.vaaclipse.widgets; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; import com.vaadin.shared.MouseEventDetails; import com.vaadin.shared.ui.splitpanel.AbstractSplitPanelRpc; import com.vaadin.ui.AbstractSplitPanel; import com.vaadin.ui.AbstractSplitPanel.SplitterClickEvent; /** * @author rushan * */ public class SashWidgetExtension { AbstractSplitPanel splitPanel; SashWidget sash; List<SplitPositionChangedListener> listeners = new ArrayList<SplitPositionChangedListener>(); public SashWidgetExtension(AbstractSplitPanel splitPanel) { this.splitPanel = splitPanel; this.sash = (SashWidget) splitPanel; installRpc(); } public void addListener(SplitPositionChangedListener listener) { this.listeners.add(listener); } public void fireEvent(float newPos) { for (SplitPositionChangedListener l : this.listeners) { l.processEvent(splitPanel, newPos); } } private void installRpc() { sash.registerRpc(new AbstractSplitPanelRpc() { @Override public void splitterClick(MouseEventDetails mouseDetails) { sash.fireEvent(new SplitterClickEvent(splitPanel, mouseDetails)); } @Override public void setSplitterPosition(float position) { sash.getState().splitterState.position = position; System.out.println("split position changed!"); fireEvent(splitPanel.getSplitPosition()); } }, AbstractSplitPanelRpc.class); } }