/*
* This library is part of OpenCms -
* the Open Source Content Management System
*
* Copyright (c) Alkacon Software GmbH (http://www.alkacon.com)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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.
*
* For further information about Alkacon Software, please see the
* company website: http://www.alkacon.com
*
* For further information about OpenCms, please see the
* project website: http://www.opencms.org
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package org.opencms.ade.galleries.client.preview.ui;
import org.opencms.ade.galleries.client.Messages;
import org.opencms.ade.galleries.client.preview.CmsBinaryPreviewHandler;
import org.opencms.ade.galleries.client.preview.I_CmsPreviewHandler;
import org.opencms.ade.galleries.shared.CmsResourceInfoBean;
import org.opencms.ade.galleries.shared.I_CmsGalleryProviderConstants.GalleryMode;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Command;
/**
* Provides a widget for the binary preview dialog .<p>
*
* @since 8.0.
*/
public class CmsBinaryPreviewDialog extends A_CmsPreviewDialog<CmsResourceInfoBean> {
/** The preview handler. */
private CmsBinaryPreviewHandler m_handler;
/** The properties tab. */
private CmsPropertiesTab m_propertiesTab;
/**
* The constructor.<p>
*
* @param dialogMode the dialog mode
* @param dialogHeight the dialog height to set
* @param dialogWidth the dialog width to set
*/
public CmsBinaryPreviewDialog(GalleryMode dialogMode, int dialogHeight, int dialogWidth) {
super(dialogMode, dialogHeight, dialogWidth);
}
/**
* @see org.opencms.ade.galleries.client.preview.ui.A_CmsPreviewDialog#fillContent(org.opencms.ade.galleries.shared.CmsResourceInfoBean)
*/
@Override
public void fillContent(CmsResourceInfoBean infoBean) {
fillPreviewPanel(infoBean);
m_propertiesTab.fillProperties(infoBean.getProperties());
}
/**
* Fills the content of the preview panel part.<p>
*
* @param infoBean the resource info
*/
public void fillPreviewPanel(CmsResourceInfoBean infoBean) {
m_previewPanel.setWidget(new CmsBinaryPreviewContent(infoBean, m_handler));
}
/**
* @see org.opencms.ade.galleries.client.preview.ui.A_CmsPreviewDialog#hasChanges()
*/
@Override
public boolean hasChanges() {
return m_propertiesTab.isChanged();
}
/**
* Initializes the preview.<p>
*
* @param handler the preview handler
*/
public void init(CmsBinaryPreviewHandler handler) {
m_handler = handler;
final CmsPropertiesTab propTab = new CmsPropertiesTab(m_galleryMode, m_dialogHeight, m_dialogWidth, m_handler);
m_selectButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
saveChanges(null);
}
});
m_propertiesTab = propTab;
m_tabbedPanel.add(m_propertiesTab, Messages.get().key(Messages.GUI_PREVIEW_TAB_PROPERTIES_0));
}
/**
* @see org.opencms.ade.galleries.client.preview.ui.A_CmsPreviewDialog#saveChanges(com.google.gwt.user.client.Command)
*/
@Override
public void saveChanges(Command afterSaveCommand) {
if (hasChanges()) {
m_propertiesTab.saveProperties(afterSaveCommand);
}
}
/**
* @see org.opencms.ade.galleries.client.preview.ui.A_CmsPreviewDialog#getHandler()
*/
@Override
protected I_CmsPreviewHandler<CmsResourceInfoBean> getHandler() {
return m_handler;
}
}