/* * (c) Copyright 2010-2011 AgileBirds * * This file is part of OpenFlexo. * * OpenFlexo is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * OpenFlexo 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with OpenFlexo. If not, see <http://www.gnu.org/licenses/>. * */ package org.openflexo.fib.view.container; import java.util.Vector; import java.util.logging.Logger; import javax.swing.JTabbedPane; import org.openflexo.fib.controller.FIBController; import org.openflexo.fib.model.FIBComponent; import org.openflexo.fib.model.FIBTab; import org.openflexo.fib.model.FIBTabPanel; import org.openflexo.fib.view.FIBContainerView; import org.openflexo.fib.view.FIBView; public class FIBTabPanelView extends FIBContainerView<FIBTabPanel, JTabbedPane> { private static final Logger logger = Logger.getLogger(FIBTabPanelView.class.getPackage().getName()); private JTabbedPane tabbedPane; public FIBTabPanelView(FIBTabPanel model, FIBController controller) { super(model, controller); } @Override public void delete() { super.delete(); } /* * @Override public void updateDataObject(Object dataObject) { update(); * System.out.println("Je suis le FIBTabPanelView " + * getComponent().getName()); if (isComponentVisible()) { for (FIBView v : * subViews) { System.out.println("Je m'occupe de mon fils: " + * v.getComponent().getName()); v.updateDataObject(dataObject); } if * (getDynamicModel() != null) { logger.fine("Container: " + getComponent() * + " value data for " + getDynamicModel() + " is " + getValue()); * getDynamicModel().setData(getValue()); notifyDynamicModelChanged(); } } } */ @Override protected JTabbedPane createJComponent() { tabbedPane = new JTabbedPane(); return tabbedPane; } @Override public JTabbedPane getJComponent() { return tabbedPane; } @Override protected void retrieveContainedJComponentsAndConstraints() { Vector<FIBTab> allTabs = new Vector<FIBTab>(); for (FIBComponent subComponent : getComponent().getSubComponents()) { if (subComponent instanceof FIBTab) { allTabs.add((FIBTab) subComponent); } } for (FIBTab tab : allTabs) { // logger.info("!!!!!!!!!!!!!!!!!!!! Build view for tab " + tab); FIBView subView = getController().buildView(tab); if (subView != null) { registerViewForComponent(subView, tab); registerComponentWithConstraints(subView.getResultingJComponent(), getLocalized(tab.getTitle())); } } } // TODO: optimize it @Override public synchronized void updateLayout() { int index = tabbedPane.getSelectedIndex(); for (FIBView v : getSubViews()) { v.delete(); } getResultingJComponent().removeAll(); buildSubComponents(); updateDataObject(getDataObject()); index = Math.min(index, tabbedPane.getTabCount() - 1); if (index > -1) { tabbedPane.setSelectedIndex(index); } } @Override public void updateLanguage() { super.updateLanguage(); int index = 0; for (FIBView v : subViews) { if (v.getComponent() instanceof FIBTab) { if (v.getJComponent().getParent() != null) { tabbedPane.setTitleAt(index, getLocalized(((FIBTab) v.getComponent()).getTitle())); index++; } else { getLocalized(((FIBTab) v.getComponent()).getTitle()); } } else { logger.warning("Unexpected component found in TabPanel: " + v.getComponent()); } } } public void setSelectedIndex(int index) { getJComponent().setSelectedIndex(index); } }