litesoft
@ 496
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 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 |
package org.litesoft.datt.client.ui.views.stories; import java.util.*; import org.litesoft.GWT.client.*; import org.litesoft.GWT.client.command.*; import org.litesoft.GWT.client.view.*; import org.litesoft.GWT.client.widgets.*; import org.litesoft.GWT.client.widgets.Button; import org.litesoft.GWT.forms.client.*; import org.litesoft.GWT.forms.client.components.*; import org.litesoft.bo.views.*; import org.litesoft.core.util.*; import org.litesoft.datt.client.*; import org.litesoft.datt.client.boviews.*; import org.litesoft.datt.client.support.*; import org.litesoft.datt.client.ui.widgets.*; import org.litesoft.uispecification.*; import com.google.gwt.event.dom.client.*; import com.google.gwt.user.client.ui.*; import static org.litesoft.uispecification.FormWidgetCtrl.*; public class MergeStoriesStepThree extends ScreenView implements ClickHandler { private StoryViewDataProvider mDataProvider = StoryViewDataProvider.getInstance(); private UriFragmentIdParams mEncodedURLs = null; private Helper mFromHelper = new Helper( this, ViewDefs.ADMIN_MERGE_STORIES ); private Helper mIntoHelper = new Helper( this, ViewDefs.ADMIN_MERGE_STORIES_STEP_TWO ); private ButtonBase mMergeButton; @Override protected UriFragmentIdParams createRefreshParams() { return mEncodedURLs; } public MergeStoriesStepThree( String pSection, ViewDef pViewDef, TwoStoryURLs pTwoStoryURLs ) { super( title( pSection, pViewDef ) ); if ( pTwoStoryURLs != null ) { mEncodedURLs = MergeStoriesStepThreeFactory.encodeParams( pTwoStoryURLs ); mFromHelper.initialize( pTwoStoryURLs.getStory0(), mIntoHelper ); mIntoHelper.initialize( pTwoStoryURLs.getStory1(), mFromHelper ); } addStandardTitleBar(); addLeft( ChangeFromBackButton.factory().add( mFromHelper.createShowScreenCommand() ).create() ); addLeft( BackButton.factory( "Change Into" ).add( mIntoHelper.createShowScreenCommand() ).create() ); add( createSectionTitle( "Story to merge From" ) ); add( mFromHelper.createStoryInfoPanel() ); add( createSectionTitle( "Story to merge Into" ) ); add( mIntoHelper.createStoryInfoPanel() ); add( new SizeableSpacer().stretchable() ); } @Override public void aboutToShow() { super.aboutToShow(); if ( mFromHelper.ok() ) { mIntoHelper.ok(); } } @Override public Widget getBottomBar() { RightHorizontalPanel zActionPanel = new RightHorizontalPanel(); zActionPanel.add( mMergeButton = Button.named( "Merge" ).green().text().add( this ).disabled().create() ); return zActionPanel; } private void formsReady() { String zNoMatch = "No match"; for ( String zName : mFromHelper.getNamedComponentNames() ) { IFormComponent z0Component = mFromHelper.getNamedComponent( zName ); IFormComponent z1Component = mIntoHelper.getNamedComponent( zName ); if ( (z0Component != null) && (z1Component != null) ) { if ( !UtilsCommon.areNonArraysEqual( z0Component.getCurrentValue(), // z1Component.getCurrentValue() ) ) { z0Component.setError( zNoMatch ); z1Component.setError( zNoMatch ); } } } mMergeButton.setEnabled( true ); } @Override public void onClick( ClickEvent event ) // Merge Button { StoryView zMergeFromStoryView = mFromHelper.getFormBinder().getObject(); StoryView zMergeIntoSiteStoryView = mIntoHelper.getFormBinder().getObject(); mDataProvider.mergeStory( zMergeFromStoryView, zMergeIntoSiteStoryView, new SimpleDataProviderCallBack() { @Override public void error( String pError ) { if ( UtilsCommon.isNotNullOrEmpty( pError ) ) { // Server Failure AlertManager.alert( this.getClass().getName(), "Merge Story", pError ); } else { // Server Success backToHome( "Story's Merged" ); } } } ); } private static class Helper implements StoryFindable { private MergeStoriesStepThree mScreenView; private ViewDef mViewDef; private ObjectURL mStory = null; private Helper mOtherHelper = null; private boolean mHasStoryView = false; private FormBinder<StoryView> mFormBinder; private FormEngine mFE; public Helper( MergeStoriesStepThree pScreenView, ViewDef pViewDef ) { mViewDef = pViewDef; mScreenView = pScreenView; } public void initialize( ObjectURL pStory, Helper pOtherHelper ) { mStory = pStory; mOtherHelper = pOtherHelper; } public Set<String> getNamedComponentNames() { return mFE.getNamedComponentNames(); } public IFormComponent getNamedComponent( String pName ) { return mFE.getNamedComponent( pName ); } public ShowScreenCommand createShowScreenCommand() { return new ShowScreenCommand( mViewDef, mScreenView.createRefreshParams() ); } public StoryInfoPanel createStoryInfoPanel() { return new StoryInfoPanel( mFormBinder = new FormBinder<StoryView>( mFE = new FormEngine( new WidgetCtrlMap( VISIBLE_BUT_DISABLED ), // FormEngine.Mode.ViewRegular, null ), // StoryViewMetaData.getInstance() ) ); } public boolean ok() { return StoryScreenViewHelper.requestRequiredStory( this, mStory, null ); } @Override public void foundStory( StoryView pStoryView, Integer pRequestID ) { mHasStoryView = true; mFormBinder.setExistingObject( pStoryView, FormEngine.Mode.ViewRegular ); if ( (mOtherHelper != null) && mOtherHelper.mHasStoryView ) { mScreenView.formsReady(); } } @Override public StatusMessageSinc getStatusMessageSinc() { return mScreenView.getStatusMessageSinc(); } @Override public void backToHome( String pError ) { mScreenView.backToHome( pError ); } public FormBinder<StoryView> getFormBinder() { return mFormBinder; } } } |