Created
July 17, 2013 21:35
-
-
Save dardison/6024746 to your computer and use it in GitHub Desktop.
HierarchyConfigurationViewImpl
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.arballon.web.framework.client.configuration.view; | |
import java.util.ArrayList; | |
import java.util.List; | |
import com.arballon.web.framework.client.mvp.view.ActionContainer; | |
import com.arballon.web.framework.shared.model.GenericRecordDTO; | |
import com.google.gwt.user.client.ui.Widget; | |
import com.sencha.gxt.widget.core.client.TabItemConfig; | |
import com.sencha.gxt.widget.core.client.TabPanel; | |
import com.sencha.gxt.widget.core.client.container.BorderLayoutContainer; | |
import com.sencha.gxt.widget.core.client.container.BorderLayoutContainer.BorderLayoutData; | |
/** | |
* Implementacion Vista de Edicion Jerarquica de un Registro de una Entidad y sus Grillas | |
* correspondientes a Entidades Hijas Relacionadas | |
* | |
* @author Daniel H. Ardison - (c)2012 Ardison Software & Consulting | |
* | |
* @param <H> DTO Modelo de Datos de la Entidad Padre | |
*/ | |
public class HierarchyConfigurationViewImpl<H extends GenericRecordDTO> | |
implements HierarchyConfigurationView<H> { | |
private TabPanel tabItems; | |
private BorderLayoutContainer container; | |
private RecordConfigurationView<H> headerView; | |
private List<ListConfigurationView<?>> detailViews; | |
private ActionContainer actionContainer; | |
public HierarchyConfigurationViewImpl(String title, RecordConfigurationView<H> header){ | |
this.headerView=header; | |
this.detailViews=new ArrayList<ListConfigurationView<?>>(); | |
this.buildUI(); | |
} | |
protected void buildUI(){ | |
this.container=new BorderLayoutContainer(); | |
BorderLayoutData southData=new BorderLayoutData(); | |
southData.setCollapsible(true); | |
southData.setSplit(true); | |
southData.setCollapseMini(true); | |
southData.setSize(260); | |
southData.setMinSize(100); | |
southData.setMaxSize(800); | |
// Cabecera | |
this.container.setCenterWidget(this.headerView); | |
// Items | |
this.tabItems=new TabPanel(); | |
this.container.setSouthWidget(tabItems, southData); | |
} | |
@Override | |
public Widget asWidget() { | |
return this.container; | |
} | |
@Override | |
public <T extends GenericRecordDTO> void addDetailRecordConfig( | |
ListConfigurationView<T> detailConfig) { | |
TabItemConfig itemConfig=new TabItemConfig(detailConfig.getEntity(), false); | |
this.tabItems.add(detailConfig, itemConfig); | |
this.tabItems.forceLayout(); | |
this.detailViews.add(detailConfig); | |
} | |
@Override | |
public void setHeaderRecordConfig(RecordConfigurationView<H> headerConfig) { | |
this.container.setCenterWidget(headerConfig); | |
} | |
@Override | |
public void disableChilds() { | |
for(ListConfigurationView<?> view : this.detailViews){ | |
view.disable(); | |
} | |
} | |
@Override | |
public void enableChilds() { | |
for(ListConfigurationView<?> view : this.detailViews){ | |
view.enable(); | |
} | |
} | |
@Override | |
public ActionContainer getZoomContainer() { | |
return this.actionContainer; | |
} | |
@Override | |
public void setZoomContainer(ActionContainer zoomContainer) { | |
this.actionContainer=zoomContainer; | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public interface ListConfigurationView<T extends GenericRecordDTO> extends ListTransactionView<T> { | |
public interface Presenter<T> extends ListTransactionView.Presenter<T> { | |
/** | |
* Graba los Registros | |
* @param toSave | |
*/ | |
void saveRows(List<T> toSave); | |
/** | |
* Filtra grillas hijas con los valores de los filtros del modelo informado | |
* @param model | |
*/ | |
void filterChilds(T model); | |
/** | |
* Solicita edicion en formato Formulario del modelo informado | |
* @param model | |
*/ | |
void recordEdit(T model); | |
void disableView(); | |
void enableView(); | |
void search(); | |
void reject(); | |
} | |
void enable(); | |
void disable(); | |
void hideColumnsForAttributes(List<String> attributeIds); | |
void addRelatedColumnId(String columnId, String relatedId); | |
void showConfirmMessage(String title, String messages, MessageBoxCallback callback); | |
void showErrorMessage(String title, String messages); | |
void addCloseButton(); | |
void removeCloseButton(); | |
CloseWaitHandler showWaitMessage(String title, String messages, String waitText); | |
public static interface MessageBoxCallback { | |
void onOk(); | |
void onCancel(); | |
} | |
public static interface CloseWaitHandler { | |
void onClose(); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.arballon.web.framework.client.configuration.view; | |
import java.util.List; | |
import com.arballon.web.framework.client.event.grid.RejectEvent; | |
import com.arballon.web.framework.client.event.grid.RejectEvent.RejectHandler; | |
import com.arballon.web.framework.client.event.grid.SaveRowsEvent; | |
import com.arballon.web.framework.client.event.grid.SaveRowsEvent.SaveRowsHandler; | |
import com.arballon.web.framework.client.event.grid.SearchEvent; | |
import com.arballon.web.framework.client.event.grid.SearchEvent.SearchHandler; | |
import com.arballon.web.framework.client.event.transaction.EditRecordEvent; | |
import com.arballon.web.framework.client.event.transaction.EditRecordEvent.EditRecordHandler; | |
import com.arballon.web.framework.client.transaction.view.ListTransactionViewImpl; | |
import com.arballon.web.framework.client.ui.widget.grid.BaseEditorGridPanel; | |
import com.arballon.web.framework.client.ui.widget.grid.UpdateEditorGridPanel; | |
import com.arballon.web.framework.shared.model.GenericRecordDTO; | |
import com.sencha.gxt.data.shared.ListStore; | |
import com.sencha.gxt.data.shared.loader.PagingLoadConfig; | |
import com.sencha.gxt.data.shared.loader.PagingLoadResult; | |
import com.sencha.gxt.data.shared.loader.PagingLoader; | |
import com.sencha.gxt.widget.core.client.Dialog.PredefinedButton; | |
import com.sencha.gxt.widget.core.client.box.AlertMessageBox; | |
import com.sencha.gxt.widget.core.client.box.AutoProgressMessageBox; | |
import com.sencha.gxt.widget.core.client.box.ConfirmMessageBox; | |
import com.sencha.gxt.widget.core.client.event.HideEvent; | |
import com.sencha.gxt.widget.core.client.event.HideEvent.HideHandler; | |
import com.sencha.gxt.widget.core.client.grid.ColumnConfig; | |
/** | |
* Grilla de Configuracion Entidades | |
* | |
* @author Daniel H. Ardison - (c)2012 Ardison Software & Consulting | |
* | |
* @param <T> | |
*/ | |
public abstract class ListConfigurationViewImpl<T extends GenericRecordDTO> extends ListTransactionViewImpl<T> | |
implements ListConfigurationView<T> { | |
public ListConfigurationViewImpl(String entity, | |
ListStore<T> store, | |
List<ColumnConfig<T, ?>> columns, | |
PagingLoader<PagingLoadConfig, PagingLoadResult<T>> loader, | |
boolean hidden) { | |
super(entity, store, columns, loader, hidden); | |
} | |
protected abstract boolean allowFormEdit(); | |
@Override | |
protected BaseEditorGridPanel<T> buildGrid() { | |
UpdateEditorGridPanel<T> result; | |
result=new UpdateEditorGridPanel<T>(getStore(), getEntity(), getColumns(), getLoader(), isHidden(), this.allowFormEdit()); | |
result.setHeadingText(getEntity()); | |
result.addSaveRowsHandler(new SaveRowsHandler<T>() { | |
@Override | |
public void onSaveRows(SaveRowsEvent<T> event) { | |
((ListConfigurationView.Presenter<T>)presenter).saveRows(event.getModels()); | |
} | |
}); | |
result.addEditRecordHandler(new EditRecordHandler<T>() { | |
@Override | |
public void onEditRecord(EditRecordEvent<T> event) { | |
((ListConfigurationView.Presenter<T>)presenter).recordEdit(event.getRecord()); | |
} | |
}); | |
result.addSearchHandler(new SearchHandler() { | |
@Override | |
public void onSearch(SearchEvent event) { | |
((ListConfigurationView.Presenter<T>)presenter).search(); | |
} | |
}); | |
result.addRejectHandler(new RejectHandler() { | |
@Override | |
public void onReject(RejectEvent event) { | |
((ListConfigurationView.Presenter<T>)presenter).reject(); | |
} | |
}); | |
return result; | |
} | |
@Override | |
public void enable() { | |
ListConfigurationView.Presenter<T> presenter=(ListConfigurationView.Presenter<T>)this.getPresenter(); | |
presenter.enableView(); | |
} | |
@Override | |
public void disable() { | |
ListConfigurationView.Presenter<T> presenter=(ListConfigurationView.Presenter<T>)this.getPresenter(); | |
presenter.disableView(); | |
} | |
@Override | |
public void hideColumnsForAttributes(List<String> attributeIds) { | |
UpdateEditorGridPanel<T> grid=(UpdateEditorGridPanel<T>)this.getGrid(); | |
grid.hideColumnsWithIds(attributeIds); | |
} | |
@Override | |
public void addRelatedColumnId(String columnId, String relatedId) { | |
this.getGrid().addHiddenRelatedColumnId(columnId, relatedId); | |
} | |
@Override | |
public void showConfirmMessage(String title, String messages, | |
MessageBoxCallback callback) { | |
this.askConfirm(title, messages, callback); | |
} | |
@Override | |
public void showErrorMessage(String title, String messages) { | |
this.showError(title, messages); | |
} | |
@Override | |
public void addCloseButton() { | |
this.getGrid().addCloseButton(); | |
} | |
@Override | |
public void removeCloseButton() { | |
this.getGrid().removeCloseButton(); | |
} | |
@Override | |
public CloseWaitHandler showWaitMessage(String title, String messages, | |
String waitText) { | |
return this.showWait(title, messages, waitText); | |
} | |
protected void askConfirm(String title, String message, MessageBoxCallback callback){ | |
final MessageBoxCallback mbc=callback; | |
final ConfirmMessageBox box=new ConfirmMessageBox(title, message); | |
box.setHideOnButtonClick(true); | |
box.addHideHandler(new HideHandler() { | |
@Override | |
public void onHide(HideEvent event) { | |
if (box.getHideButton() == box.getButtonById(PredefinedButton.YES.name())) { | |
mbc.onOk(); | |
} else if (box.getHideButton() == box.getButtonById(PredefinedButton.NO.name())){ | |
mbc.onCancel(); | |
} | |
} | |
}); | |
box.setWidth(300); | |
box.show(); | |
} | |
protected void showError(String title, String message){ | |
final AlertMessageBox box=new AlertMessageBox(title, message); | |
box.show(); | |
} | |
protected CloseWaitHandler showWait(String title, String message, String waitText){ | |
final AutoProgressMessageBox box=new AutoProgressMessageBox(title, message); | |
CloseWaitHandler result=new CloseWaitHandler() { | |
@Override | |
public void onClose() { | |
box.hide(); | |
} | |
}; | |
box.setProgressText(waitText); | |
box.auto(); | |
box.show(); | |
return result; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment