001/*
002 * This library is part of OpenCms -
003 * the Open Source Content Management System
004 *
005 * Copyright (c) Alkacon Software GmbH & Co. KG (http://www.alkacon.com)
006 *
007 * This library is free software; you can redistribute it and/or
008 * modify it under the terms of the GNU Lesser General Public
009 * License as published by the Free Software Foundation; either
010 * version 2.1 of the License, or (at your option) any later version.
011 *
012 * This library is distributed in the hope that it will be useful,
013 * but WITHOUT ANY WARRANTY; without even the implied warranty of
014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015 * Lesser General Public License for more details.
016 *
017 * For further information about Alkacon Software, please see the
018 * company website: http://www.alkacon.com
019 *
020 * For further information about OpenCms, please see the
021 * project website: http://www.opencms.org
022 *
023 * You should have received a copy of the GNU Lesser General Public
024 * License along with this library; if not, write to the Free Software
025 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
026 */
027
028package org.opencms.ui.apps.dbmanager;
029
030import org.opencms.ui.A_CmsUI;
031import org.opencms.ui.CmsVaadinUtils;
032import org.opencms.ui.apps.A_CmsAttributeAwareApp;
033import org.opencms.ui.apps.Messages;
034import org.opencms.ui.components.CmsBasicDialog;
035import org.opencms.ui.components.CmsBasicDialog.DialogWidth;
036import org.opencms.ui.components.CmsToolBar;
037import org.opencms.util.CmsStringUtil;
038
039import java.util.LinkedHashMap;
040import java.util.List;
041
042import com.vaadin.server.FontAwesome;
043import com.vaadin.ui.Button;
044import com.vaadin.ui.Button.ClickEvent;
045import com.vaadin.ui.Component;
046import com.vaadin.ui.Window;
047
048/**
049 * Class for the database synchronization app.<p>
050 */
051public class CmsDbSynchronizationApp extends A_CmsAttributeAwareApp {
052
053    /**vaadin component.*/
054    private Button m_refresh;
055
056    /**
057     * @see org.opencms.ui.apps.A_CmsWorkplaceApp#getBreadCrumbForState(java.lang.String)
058     */
059    @Override
060    protected LinkedHashMap<String, String> getBreadCrumbForState(String state) {
061
062        LinkedHashMap<String, String> crumbs = new LinkedHashMap<String, String>();
063
064        if (CmsStringUtil.isEmptyOrWhitespaceOnly(state)) {
065            crumbs.put("", CmsVaadinUtils.getMessageText(Messages.GUI_DATABASEAPP_SYNC_NAME_0));
066            return crumbs;
067        }
068        return new LinkedHashMap<String, String>();
069    }
070
071    /**
072     * @see org.opencms.ui.apps.A_CmsWorkplaceApp#getComponentForState(java.lang.String)
073     */
074    @Override
075    protected Component getComponentForState(String state) {
076
077        if (m_refresh == null) {
078            m_refresh = CmsToolBar.createButton(
079                FontAwesome.REFRESH,
080                CmsVaadinUtils.getMessageText(Messages.GUI_DATABASEAPP_SYNCH_RUN_0));
081            m_refresh.addClickListener(new Button.ClickListener() {
082
083                private static final long serialVersionUID = 4980773759687185944L;
084
085                public void buttonClick(ClickEvent event) {
086
087                    final Window window = CmsBasicDialog.prepareWindow(DialogWidth.wide);
088                    window.setContent(new CmsDbSynchDialog(new Runnable() {
089
090                        public void run() {
091
092                            window.close();
093                        }
094                    }));
095                    window.setCaption(CmsVaadinUtils.getMessageText(Messages.GUI_DATABASEAPP_SYNCH_RUN_0));
096                    A_CmsUI.get().addWindow(window);
097
098                }
099            });
100            m_uiContext.addToolbarButton(m_refresh);
101        }
102        CmsDbSynchronizationView view = new CmsDbSynchronizationView(this);
103        if (CmsStringUtil.isEmptyOrWhitespaceOnly(state)) {
104            return view;
105        }
106        return null;
107    }
108
109    /**
110     * @see org.opencms.ui.apps.A_CmsWorkplaceApp#getSubNavEntries(java.lang.String)
111     */
112    @Override
113    protected List<NavEntry> getSubNavEntries(String state) {
114
115        return null;
116    }
117
118    /**
119     * Sets the visivility of the refresh button.<p>
120     *
121     * @param visible true -> button is visible
122     */
123    protected void setRefreshButton(boolean visible) {
124
125        m_refresh.setVisible(visible);
126    }
127}