litesoft
@ 947
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 |
// This Source Code is in the Public Domain per: http://unlicense.org package org.litesoft.GWT.client.widgets.nonpublic; import org.litesoft.GWT.client.widgets.nonpublic.external.*; import com.google.gwt.user.client.ui.*; public abstract class AbstractSizeableVerticalSplitPairPanel extends AbstractSizeableVerticalPanel { private VerticalSplitterDragger mDragger; @Override protected void initialize() { super.initialize(); LLstretchableVertically(); } public AbstractSizeableVerticalSplitPairPanel add( Widget pTopWidget, Widget pBottomWidget ) { add( pTopWidget ); add( pBottomWidget ); return this; } @Override protected boolean aboutToAdopt( Widget pWidget, int pBeforeIndex ) { if ( pWidget instanceof Splitter ) { throw new IllegalArgumentException( "Attempt to add Splitter directly" ); } if ( !getSizeableWidget( pWidget ).getHeightHelper().isStretchable() ) { throw new IllegalArgumentException( "Attempt to add widget to Vertical Split Pair Panel that does NOT support Vertical Stretchability" ); } if ( !isOur( pWidget ) && (getWidgetCount() == 3) ) { throw new IllegalArgumentException( "Vertical Split Pair Panel only supports TWO Vertical Stretchables" ); } return super.aboutToAdopt( pWidget, pBeforeIndex ); } @Override protected void justAdopted( Widget pWidget, int pWidgetIndex ) { super.justAdopted( pWidget, pWidgetIndex ); // Since we only support 2 real widgets, they could be disordered in regards to the splitter dropSplitters(); if ( getWidgetCount() == 2 ) { LLadopt( createSplitter( 1 ), 1 ); } } @Override protected void justDisowned( Widget pWidget, int pWidgetIndex ) { super.justDisowned( pWidget, pWidgetIndex ); // Since we only support 2 real widgets, any disowned should remove the splitter dropSplitters(); } private void dropSplitters() { for ( int i = getWidgetCount(); --i >= 0; ) { Widget widget = getWidget( i ); if ( widget instanceof Splitter ) { LLdisown( widget, i ); } } } protected Widget createSplitter( int pIndex ) { Splitter result = new Splitter( "litesoft-SplitterForVerticalPair" ); result.stretchableHorizontally(); mDragger = new VerticalSplitterDragger( this, pIndex ); result.addController( new DragController( new MousePerformanceFilter( new MouseDragHandler( mDragger ) ) ) ); return result; } private class VerticalSplitterDragger extends AbstractSplitterDragger { public VerticalSplitterDragger( AbstractSizeableOneDimensionalPanel panel, int pIndex ) { super( panel, pIndex ); } @Override protected boolean dragBy( int pDeltaX, int pDeltaY ) { return adjustSizesBy( getSizeableAt( mIndex - 1 ).getHeightHelper(), // getSizeableAt( mIndex + 1 ).getHeightHelper(), // pDeltaY ); } } @Override public void setWidth( String width ) { super.setWidth( width ); // for stacktrace Debugging } @Override public void setHeight( String height ) { super.setHeight( height ); // for stacktrace Debugging } private boolean mFavorFirstWidget; protected void setFavorFirstWidget() { mFavorFirstWidget = true; } public boolean setFirstWidgetHeight( int pPixels ) { if ( (pPixels > 20) && anyChildren() ) { int zDimension = getHeightHelper().getDimension(); if ( (zDimension > 20) && (zDimension != pPixels) ) { mDragger.dragBy( 0, pPixels - zDimension ); return true; } } return false; } @Override protected void distributeToChildrenChangedHeight() { if ( anyChildren() ) { getHelper().distributeDimensionToChild( this, getHeightHelper(), mFavorFirstWidget ? getFirstWidget() : getLastWidget() ); } } } |
Commits for litesoft/trunk/Java/GWT/Client/src/org/litesoft/GWT/client/widgets/nonpublic/AbstractSizeableVerticalSplitPairPanel.java
Revision | Author | Commited | Message |
---|---|---|---|
947 Diff | GeorgeS | Fri 06 Jun, 2014 23:36:56 +0000 | Correct Spelling of package! |
295 Diff | markcmarkc | Sun 26 Jun, 2011 10:17:39 +0000 | |
49 Diff | GeorgeS | Mon 12 Apr, 2010 02:59:10 +0000 | License Text |
23 Diff | GeorgeS | Wed 24 Feb, 2010 00:34:32 +0000 | |
2 | GeorgeS | Sun 07 Feb, 2010 12:50:58 +0000 |