litesoft
@ 948
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 |
// 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 |
---|---|---|---|
948 Diff | GeorgeS | Sat 07 Jun, 2014 23:42:39 +0000 | Jusefuls Formatter Updated to New Code Format |
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 |