/** * */ package org.gcube.portlets.user.sdmxexportwizardtd.client.general; import org.gcube.portlets.user.sdmxexportwizardtd.client.dataresource.ResourceBundle; import com.allen_sauer.gwt.log.client.Log; import com.google.gwt.user.client.ui.HTML; import com.sencha.gxt.widget.core.client.Component; import com.sencha.gxt.widget.core.client.ContentPanel; import com.sencha.gxt.widget.core.client.container.BorderLayoutContainer; import com.sencha.gxt.widget.core.client.event.SelectEvent.SelectHandler; /** * Represents a Wizard Card. * @author Federico De Faveri defaveri@isti.cnr.it */ public class WizardCard extends BorderLayoutContainer { private WizardWindow wizardWindow; protected ContentPanel titlePanel; protected ContentPanel footerPanel; protected boolean calculateFooter = false; protected HTML titleHtml; protected HTML footerHtml; final protected ResourceBundle res=ResourceBundle.IMPL; /** * Creates a new wizard card. * The footer is automatically calculated. * @param title the card title. */ public WizardCard(String title) { this(title,""); calculateFooter = true; } /** * Creates a new wizard card. * @param title the card title. * @param footer the card footer. */ public WizardCard(String title, String footer) { Log.info(title); res.sdmxExportCss().ensureInjected(); //add the title panel titlePanel = new ContentPanel(); titlePanel.setHeight(30); titlePanel.setBodyStyle("background-color:#C3D9FF"); titlePanel.setHeaderVisible(false); titleHtml = new HTML(title); titleHtml.setStylePrimaryName(res.sdmxExportCss().getWizardTitle()); titlePanel.add(titleHtml); setNorthWidget(titlePanel, new BorderLayoutData(30)); //add the footer panel footerPanel = new ContentPanel(); footerPanel.setHeight(30); footerPanel.setBodyStyle("background-color:#CDEB8B"); footerPanel.setHeaderVisible(false); footerHtml = new HTML(footer); footerHtml.setStylePrimaryName(res.sdmxExportCss().getWizardFooter()); footerPanel.add(footerHtml); setSouthWidget(footerPanel, new BorderLayoutData(30)); } /** * {@inheritDoc} */ public void setTitle(String title) { titleHtml.setHTML("
"+footer+"
"); } /** * Sets the card content. * @param content the card content. */ public void setContent(Component content) { setCenterWidget(content); } /** * Sets the card content. * @param content the card content. */ public void setContent(com.google.gwt.user.client.ui.Panel content) { setCenterWidget(content); } /** * Enables the next button. * @param enabletrue
to enable it, false
otherwise.
*/
public void setEnableNextButton(boolean enable)
{
if (wizardWindow!=null){
wizardWindow.setEnableNextButton(enable);
}
}
/**
* Enables the back button.
* @param enable true
to enable the button, false
otherwise.
*/
public void setEnableBackButton(boolean enable)
{
if (wizardWindow!=null){
wizardWindow.setEnableBackButton(enable);
}
}
/**
* Sets the next button label.
* @param text the button label.
*/
public void setNextButtonText(String text)
{
if (wizardWindow!=null){
wizardWindow.setNextButtonText(text);
}
}
/**
* Sets the back button label.
* @param text the button label.
*/
public void setBackButtonText(String text)
{
if (wizardWindow!=null){
wizardWindow.setBackButtonText(text);
}
}
/**
* Visible the next button.
* @param visible true
to show the button, false
otherwise.
*/
public void setNextButtonVisible(boolean visible)
{
if (wizardWindow!=null){
wizardWindow.setNextButtonVisible(visible);
}
}
/**
* Visible the back button.
* @param visible true
to show the button, false
otherwise.
*/
public void setBackButtonVisible(boolean visible)
{
if (wizardWindow!=null){
wizardWindow.setBackButtonVisible(visible);
}
}
public void setNextButtonToFinish()
{
if (wizardWindow!=null){
wizardWindow.setNextButtonToFinish();
}
}
/**
* Sets the WizardWindow for this import card.
* @param wizardWindow the WizardWindow.
*/
protected void setWizardWindow(WizardWindow wizardWindow)
{
this.wizardWindow = wizardWindow;
if (calculateFooter) {
StringBuilder footer = new StringBuilder();
footer.append("Step ");
footer.append(getCardPosition());
footer.append(" of ");
footer.append(getCardSize());
setFooter(footer.toString());
}
}
/**
* Returns the current wizard window.
* @return the wizard window.
*/
protected WizardWindow getWizardWindow()
{
if (wizardWindow==null) throw new IllegalStateException("No Wizard Window setup");
return wizardWindow;
}
public void addToWindowTitle(String toAdd)
{
wizardWindow.setTitle(wizardWindow.getOriginalTitle()+toAdd);
}
/**
* Called before the card is showed.
*/
public void setup()
{
}
/**
* Called when the card is disposed.
*/
public void dispose()
{}
/**
* Add a listener to the next button.
* @param listener the listener to add.
*/
public void addNextButtonListener(SelectHandler listener)
{
if (wizardWindow!=null){
wizardWindow.addNextButtonListener(listener);
}
}
/**
* Gets the number of cards in the wizard window.
* @return the number of cards.
*/
public int getCardSize()
{
return getWizardWindow().getCardStackSize();
}
/**
* Returns this card position on card list.
* @return the card position on the card stack.
*/
public int getCardPosition()
{
int indexPosition = getWizardWindow().getCardStack().indexOf(this);
return (indexPosition>=0)?indexPosition+1:indexPosition;
}
public void showErrorAndHide(String title, final String failureReason, final String failureDetails, final Throwable throwable)
{
wizardWindow.showErrorAndHide(title, failureReason, failureDetails, throwable);
}
public void hideWindow()
{
wizardWindow.hide();
}
}