/* * Copyright 2006-2008 Pentaho Corporation. All rights reserved. * This program is free software; you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software * Foundation. * * You should have received a copy of the GNU Lesser General Public License along with this * program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html * or from the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Lesser General Public License for more details. * * Copyright 2008 - 2009 Pentaho Corporation. All rights reserved. * * @created May 19, 2008 * */ package org.pentaho.pac.client.scheduler.view; import java.util.Date; import java.util.HashMap; import java.util.Map; import org.pentaho.pac.client.common.ui.dialog.ConfirmDialog; import org.pentaho.pac.client.i18n.Messages; import com.google.gwt.user.client.ui.DeckPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.SourcesTabEvents; import com.google.gwt.user.client.ui.TabListener; import com.google.gwt.user.client.ui.TabPanel; public class ScheduleCreatorDialog extends ConfirmDialog { private static final String SELECTED = "selected"; //$NON-NLS-1$ public enum TabIndex { SCHEDULE( 0, Messages.getString("schedule") ), //$NON-NLS-1$ SCHEDULE_ACTION( 1, Messages.getString("selectedFilesTabLabel") ); //$NON-NLS-1$ private TabIndex( int value, String name ) { this.value = value; this.name = name; } private int value; private String name; private static TabIndex[] tabIndexAr = { SCHEDULE, SCHEDULE_ACTION }; public static TabIndex get(int idx) { return tabIndexAr[idx]; } public int value() { return value; } public String toString() { return name; } }; // end enum private DualModeScheduleEditor scheduleEditor = new DualModeScheduleEditor(); private SolutionRepositoryActionSequenceListEditor actionSequenceEditor = new SolutionRepositoryActionSequenceListEditor(); private Label scheduleTabLabel = new Label( TabIndex.SCHEDULE.toString() ); private Label scheduleActionTabLabel = new Label( TabIndex.SCHEDULE_ACTION.toString() ); private Map<TabIndex, Label> tabLabelMap = new HashMap<TabIndex, Label>(); private TabPanel tabPanel = new TabPanel(); public ScheduleCreatorDialog() { super(); this.setNoBorderOnClientPanel(); setTitle( Messages.getString("scheduleCreator") ); //$NON-NLS-1$ tabPanel.setSize("100%", "100%"); //$NON-NLS-1$ //$NON-NLS-2$ actionSequenceEditor.setWidth( "100%" ); //$NON-NLS-1$ actionSequenceEditor.setHeight( "100%" ); //$NON-NLS-1$ // tabPanel.setStylePrimaryName( "schedulerTabPanel" ); //$NON-NLS-1$ tabPanel.add( scheduleEditor, scheduleTabLabel ); tabPanel.add( actionSequenceEditor, scheduleActionTabLabel ); DeckPanel dp = tabPanel.getDeckPanel(); dp.setStyleName( "scheduleCreatorDeckPanel" ); //$NON-NLS-1$ dp.addStyleName("gwt-TabPanelBottom"); //$NON-NLS-1$ scheduleTabLabel.setStylePrimaryName( "tabLabel" ); //$NON-NLS-1$ scheduleActionTabLabel.setStylePrimaryName( "tabLabel" ); //$NON-NLS-1$ tabLabelMap.put( TabIndex.SCHEDULE, scheduleTabLabel ); tabLabelMap.put( TabIndex.SCHEDULE_ACTION, scheduleActionTabLabel ); tabPanel.selectTab( TabIndex.SCHEDULE.value() ); tabPanel.addTabListener( new TabListener() { public boolean onBeforeTabSelected(SourcesTabEvents sender, int tabIndex) { return true; } public void onTabSelected(SourcesTabEvents sender, int tabIndex) { for ( Map.Entry<TabIndex,Label> me : tabLabelMap.entrySet() ) { Label l = me.getValue(); l.removeStyleDependentName( SELECTED ); } Label l = tabLabelMap.get( TabIndex.get( tabIndex ) ); l.addStyleDependentName( SELECTED ); switch (TabIndex.get( tabIndex) ) { case SCHEDULE: scheduleEditor.setFocus(); break; case SCHEDULE_ACTION: actionSequenceEditor.setFocus(); break; } } }); addWidgetToClientArea( tabPanel ); } public void setPanelSize(String width, String height){ setSize(width, height); DeckPanel dp = tabPanel.getDeckPanel(); dp.setSize(width, height); } public DualModeScheduleEditor getScheduleEditor() { return scheduleEditor; } public SolutionRepositoryActionSequenceListEditor getSolutionRepositoryActionSequenceEditor() { return actionSequenceEditor; } public void reset( Date d ) { scheduleEditor.reset( d ); actionSequenceEditor.reset(); tabPanel.selectTab( TabIndex.SCHEDULE.value() ); } public void setSelectedTab( TabIndex tabKey ) { tabPanel.selectTab( tabKey.value() ); } public TabIndex getSelectedTab() { return TabIndex.get( tabPanel.getTabBar().getSelectedTab() ); } public void setTabError( TabIndex tabKey ) { tabLabelMap.get(tabKey).setStylePrimaryName( "tabLabelError" ); //$NON-NLS-1$ } public void clearTabError() { for ( Map.Entry<TabIndex, Label> me : tabLabelMap.entrySet() ) { me.getValue().setStylePrimaryName( "tabLabel" ); //$NON-NLS-1$ } } }