/** * Copyright (c) 2009 Juwi MacMillan Group GmbH * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package de.juwimm.cms.gui.admin; import static de.juwimm.cms.client.beans.Application.getBean; import static de.juwimm.cms.common.Constants.rb; import java.awt.BorderLayout; import java.awt.Cursor; import javax.swing.JPanel; import javax.swing.JTabbedPane; import javax.swing.SwingUtilities; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import org.apache.log4j.Logger; import de.juwimm.cms.client.beans.Beans; import de.juwimm.cms.common.UserRights; import de.juwimm.cms.gui.controls.ReloadablePanel; import de.juwimm.cms.gui.controls.UnloadablePanel; import de.juwimm.cms.util.Communication; /** * @author <a href="sascha.kulawik@juwimm.com">Sascha-Matthias Kulawik</a> * @version $Id$ */ public class PanAdministrationRoot extends JPanel implements UnloadablePanel { private static Logger log = Logger.getLogger(PanAdministrationRoot.class); private final JTabbedPane panTab = new JTabbedPane(); private PanUser panUser; private PanUnitGroupPerUser panUnitUser; private PanViews panView; private PanUnitGroup panUnit; private PanSitesAdministration panSitesAdmin; private PanHost panHost; private PanUserSites panUserSites; private PanSafeguardRealmManager panSafeguard; private PanSiteGroups panSiteGroups = null; private PanCmsResources panCmsResources; private final Communication comm = ((Communication) getBean(Beans.COMMUNICATION)); public PanAdministrationRoot() { try { setDoubleBuffered(true); jbInit(); } catch (Exception exe) { log.error("Initialization Error", exe); } } void jbInit() throws Exception { this.setLayout(new BorderLayout()); panUser = new PanUser(); panTab.add(panUser, rb.getString("panel.admin.tab.user")); panUnitUser = new PanUnitGroupPerUser(); panTab.add(panUnitUser, rb.getString("panel.admin.tab.unitUser")); panView = new PanViews(); panTab.add(panView, rb.getString("panel.admin.tab.view")); panUnit = new PanUnitGroup(); panTab.add(panUnit, rb.getString("panel.admin.tab.unit")); if ((comm.isUserInRole(UserRights.MANAGE_HOSTS)) || (comm.isUserInRole(UserRights.SITE_ROOT)) || (comm.getUser().isMasterRoot())) { panHost = new PanHost(); panTab.add(panHost, rb.getString("panel.admin.tab.hosts")); } if (comm.getUser().isMasterRoot()) { panSitesAdmin = new PanSitesAdministration(); panTab.add(panSitesAdmin, rb.getString("panel.admin.tab.sites")); } else if (comm.isUserInRole(UserRights.SITE_ROOT)) { panUserSites = new PanUserSites(); panTab.add(panUserSites, rb.getString("panel.admin.tab.user.sites")); } if ((comm.isUserInRole(UserRights.MANAGE_SAFEGUARD)) // || (comm.isUserInRole(UserRights.SITE_ROOT)) at present no customer may see this tab !!! || (comm.getUser().isMasterRoot())) { panSafeguard = new PanSafeguardRealmManager(); panTab.add(panSafeguard, rb.getString("panel.admin.tab.safeguard")); } if (comm.getUser().isMasterRoot()) { panSiteGroups = new PanSiteGroups(); panTab.add(panSiteGroups, rb.getString("panel.admin.tab.sitegroups")); } panCmsResources = new PanCmsResources(comm); panTab.add(panCmsResources, rb.getString(PanCmsResources.TitleKey)); panTab.setSelectedIndex(0); /* Change the Tab in panel */ panTab.addChangeListener(new ChangeListener() { //int lastIndex = 0; private int lastIndex = panTab.indexOfTab(rb.getString("panel.admin.tab.user")); public void stateChanged(ChangeEvent e) { SwingUtilities.invokeLater(new Runnable() { public void run() { setCursor(new Cursor(Cursor.WAIT_CURSOR)); String strTabName = panTab.getTitleAt(panTab.getSelectedIndex()); if (strTabName.equals(rb.getString("panel.admin.tab.user"))) { if (lastIndex == panTab.indexOfTab(rb.getString("panel.admin.tab.unitUser"))) { panUnitUser.unload(); } panUser.reload(); lastIndex = panTab.indexOfTab(rb.getString("panel.admin.tab.user")); } else if (strTabName.equals(rb.getString("panel.admin.tab.unitUser"))) { if (lastIndex == panTab.indexOfTab(rb.getString("panel.admin.tab.user"))) { panUser.unload(); } panUnitUser.reload(); lastIndex = panTab.indexOfTab(rb.getString("panel.admin.tab.unitUser")); } else if (strTabName.equals(rb.getString("panel.admin.tab.unit"))) { if (lastIndex == panTab.indexOfTab(rb.getString("panel.admin.tab.user"))) { panUser.unload(); } panUnit.reload(); lastIndex = panTab.indexOfTab(rb.getString("panel.admin.tab.unit")); } else if (strTabName.equals(rb.getString("panel.admin.tab.view"))) { if (lastIndex == panTab.indexOfTab(rb.getString("panel.admin.tab.user"))) { panUser.unload(); } panView.reload(); lastIndex = panTab.indexOfTab(rb.getString("panel.admin.tab.view")); } else if (strTabName.equalsIgnoreCase(rb.getString("panel.admin.tab.sites"))) { if (lastIndex == panTab.indexOfTab(rb.getString("panel.admin.tab.user"))) { panUser.unload(); } panSitesAdmin.reload(); lastIndex = panTab.indexOfTab(rb.getString("panel.admin.tab.sites")); } else if (strTabName.equalsIgnoreCase(rb.getString("panel.admin.tab.user.sites"))) { if (lastIndex == panTab.indexOfTab(rb.getString("panel.admin.tab.user"))) { panUser.unload(); } panUserSites.reload(); lastIndex = panTab.indexOfTab(rb.getString("panel.admin.tab.user.sites")); } else if (strTabName.equalsIgnoreCase(rb.getString("panel.admin.tab.hosts"))) { if (lastIndex == panTab.indexOfTab(rb.getString("panel.admin.tab.user"))) { panUser.unload(); } panHost.reload(); lastIndex = panTab.indexOfTab(rb.getString("panel.admin.tab.hosts")); } else if (strTabName.equalsIgnoreCase(rb.getString("panel.admin.tab.safeguard"))) { if (lastIndex == panTab.indexOfTab(rb.getString("panel.admin.tab.user"))) { panUser.unload(); } panSafeguard.reload(); lastIndex = panTab.indexOfTab(rb.getString("panel.admin.tab.safeguard")); } else if (strTabName.equalsIgnoreCase(rb.getString("panel.admin.tab.sitegroups"))) { if (lastIndex == panTab.indexOfTab(rb.getString("panel.admin.tab.user"))) { panUser.unload(); } panSiteGroups.reload(); lastIndex = panTab.indexOfTab(rb.getString("panel.admin.tab.sitegroups")); } else if (strTabName.equalsIgnoreCase(rb.getString(PanCmsResources.TitleKey))) { if (lastIndex == panTab.indexOfTab(rb.getString("panel.admin.tab.user"))) { panUser.unload(); } panCmsResources.reload(); lastIndex = panTab.indexOfTab(rb.getString(PanCmsResources.TitleKey)); } setCursor(Cursor.getDefaultCursor()); } }); } }); this.add(panTab, BorderLayout.CENTER); } public void reload() throws Exception { ReloadablePanel rpan = (ReloadablePanel) panTab.getSelectedComponent(); rpan.reload(); } public void unload() { panUser.unload(); panUnitUser.unload(); panView.unload(); } }