All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.opencms.ade.postupload.client.ui.CmsUploadPropertyDialog Maven / Gradle / Ivy

Go to download

OpenCms is an enterprise-ready, easy to use website content management system based on Java and XML technology. Offering a complete set of features, OpenCms helps content managers worldwide to create and maintain beautiful websites fast and efficiently.

There is a newer version: 18.0
Show newest version
/*
 * the Open Source Content Management System
 *
 * Copyright (c) Alkacon Software GmbH & Co. KG (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.postupload.client.ui;

import org.opencms.ade.postupload.client.Messages;
import org.opencms.ade.postupload.shared.CmsPostUploadDialogBean;
import org.opencms.ade.postupload.shared.CmsPostUploadDialogPanelBean;
import org.opencms.ade.postupload.shared.rpc.I_CmsPostUploadDialogService;
import org.opencms.ade.postupload.shared.rpc.I_CmsPostUploadDialogServiceAsync;
import org.opencms.gwt.client.CmsCoreProvider;
import org.opencms.gwt.client.rpc.CmsRpcAction;
import org.opencms.gwt.client.rpc.CmsRpcPrefetcher;
import org.opencms.gwt.client.ui.CmsErrorDialog;
import org.opencms.gwt.client.ui.CmsFrameDialog;
import org.opencms.gwt.client.ui.CmsPushButton;
import org.opencms.gwt.client.ui.CmsScrollPanel;
import org.opencms.gwt.client.ui.I_CmsButton.ButtonColor;
import org.opencms.gwt.client.ui.I_CmsButton.ButtonStyle;
import org.opencms.util.CmsUUID;

import java.util.ArrayList;
import java.util.List;

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.ServiceDefTarget;

/**
 * Provides a dialog.

* * @since 8.0.0 */ public class CmsUploadPropertyDialog { /** The panel for the content. */ CmsScrollPanel m_dialogContent = GWT.create(CmsScrollPanel.class); /** The pre fetched date. */ CmsPostUploadDialogBean m_dialogData; /** The index of the currently displayed resource. */ int m_dialogIndex; /** List of resource uuids. */ List m_resources; /** The advanced button. */ private CmsPushButton m_buttonAdvanced = new CmsPushButton(); /** The back button. */ private CmsPushButton m_buttonBack = new CmsPushButton(); /** The cancel button. */ private CmsPushButton m_buttonClose = new CmsPushButton(); /** The save button. */ private CmsPushButton m_buttonNext = new CmsPushButton(); /** The command that is executed on close action. */ private Command m_closeCommand; /** The dialog service. */ private I_CmsPostUploadDialogServiceAsync m_dialogService; /** The frame dialog. */ private CmsFrameDialog m_frameDialog = new CmsFrameDialog(); /** The next action to execute after a Save operation. */ private Runnable m_nextAction; /** The current dialog bean. */ private CmsPostUploadDialogPanelBean m_panelData; /** The current property panel. */ private CmsUploadPropertyPanel m_uploadPropertyPanel; /** * Public constructor.

*/ public CmsUploadPropertyDialog() { m_frameDialog.setContent(m_dialogContent); m_dialogContent.addStyleName( org.opencms.ade.postupload.client.ui.css.I_CmsLayoutBundle.INSTANCE.dialogCss().propertyDialog()); try { m_dialogData = (CmsPostUploadDialogBean)CmsRpcPrefetcher.getSerializedObjectFromDictionary( getDialogService(), CmsPostUploadDialogBean.DICT_NAME); m_resources = new ArrayList(m_dialogData.getResources().keySet()); } catch (Exception e) { CmsErrorDialog.handleException( new Exception( "Deserialization of upload hook data failed." + "This may be caused by expired java-script resources, " + " please clear your browser cache and try again.", e)); } if (!m_dialogData.getResources().isEmpty()) { createButtons(); } } /** * Closes the dialog.

*/ public void closeDialog() { if (m_closeCommand != null) { m_closeCommand.execute(); } m_frameDialog.hide(); } /** * Returns true if we are currently in the explorer mode.

* * @return true if we are currently in the explorer mode */ public native boolean isExplorerMode() /*-{ if ($wnd.self.name == 'explorer_files') { return true; } return false; }-*/; /** * Returns if the dialog is in iFrame mode.

* * @return true if the dialog is in iFrame mode */ public boolean isIFrameMode() { return CmsFrameDialog.hasParentFrame(); } /** * Loads and shows the content of the dialog inside a popup.

*/ public void loadAndShow() { loadDialogBean(m_resources.get(m_dialogIndex)); } /** * Runs the next action after finishing a save operation. */ public void runAction() { if (m_nextAction != null) { m_nextAction.run(); m_nextAction = null; } } /** * Adds a close "button" to the top of the popup.

* * @param cmd the command that should be executed when the close button is clicked */ public void setCloseCmd(final Command cmd) { m_closeCommand = cmd; } /** * Delegation method.

* * @param height the height * * @see org.opencms.gwt.client.ui.CmsFrameDialog#setHeight(int) */ public void setHeight(int height) { m_frameDialog.setHeight(height); } /** * Delegation method.

* * @param title the title * * @see org.opencms.gwt.client.ui.CmsFrameDialog#setTitle(java.lang.String) */ public void setTitle(String title) { m_frameDialog.setTitle(title); } /** * Delegation method.

* * @param width the width * * @see org.opencms.gwt.client.ui.CmsFrameDialog#setWidth(int) */ public void setWidth(int width) { m_frameDialog.setWidth(width); } /** * Updates the height of the dialog to fit the content.

*/ public void updateHeight() { int height = m_dialogContent.getOffsetHeight() + 76; setHeight(height); } /** * */ protected void actionAdvanced() { String resPath = m_dialogData.getResources().get(m_resources.get(m_dialogIndex)); String url = CmsCoreProvider.get().link("/system/workplace/commons/property_advanced.jsp?resource=" + resPath); Window.Location.assign(url); } /** * Action to display the dialog content for the previous resource.

*/ protected void actionBack() { if (m_dialogIndex <= 0) { return; } m_dialogIndex--; m_uploadPropertyPanel.getPropertyEditor().getForm().validateAndSubmit(); m_nextAction = new Runnable() { public void run() { loadDialogBean(m_resources.get(m_dialogIndex)); } }; } /** * Action to close the dialog.

*/ protected void actionClose() { m_uploadPropertyPanel.getPropertyEditor().getForm().validateAndSubmit(); m_nextAction = new Runnable() { public void run() { closeDialog(); } }; } /** * Action to display the dialog content for the next resource.

*/ protected void actionNext() { if (m_dialogIndex >= (m_resources.size() - 1)) { return; } m_dialogIndex++; m_uploadPropertyPanel.getPropertyEditor().getForm().validateAndSubmit(); m_nextAction = new Runnable() { public void run() { loadDialogBean(m_resources.get(m_dialogIndex)); } }; } /** * Returns the dialog service instance.

* * @return the dialog service instance */ protected I_CmsPostUploadDialogServiceAsync getDialogService() { if (m_dialogService == null) { m_dialogService = GWT.create(I_CmsPostUploadDialogService.class); String serviceUrl = CmsCoreProvider.get().link("org.opencms.ade.postupload.CmsPostUploadDialogService.gwt"); ((ServiceDefTarget)m_dialogService).setServiceEntryPoint(serviceUrl); } return m_dialogService; } /** * Retrieves the resource information from the server, * creates a the dialogs content and puts the content into the mainpanel.

* * @param uuid the structure id to show the dialog for */ protected void loadDialogBean(final CmsUUID uuid) { CmsRpcAction callback = new CmsRpcAction() { /** * @see org.opencms.gwt.client.rpc.CmsRpcAction#execute() */ @Override public void execute() { getDialogService().load( uuid, m_dialogData.isUsePropertyConfiguration(), m_dialogData.isAddBasicProperties(), this); } /** * @see org.opencms.gwt.client.rpc.CmsRpcAction#onFailure(java.lang.Throwable) */ @Override public void onFailure(Throwable t) { super.onFailure(t); } /** * @see org.opencms.gwt.client.rpc.CmsRpcAction#onResponse(java.lang.Object) */ @Override protected void onResponse(CmsPostUploadDialogPanelBean result) { updateDialog(result); } }; callback.execute(); } /** * Updates the dialog.

* * @param result the result */ protected void updateDialog(CmsPostUploadDialogPanelBean result) { m_panelData = result; if (m_dialogData.getResources().size() > 1) { if (m_dialogIndex == 0) { m_buttonBack.disable( org.opencms.ade.postupload.client.Messages.get().key( org.opencms.ade.postupload.client.Messages.GUI_DIALOG_INFO_FIRST_RESOURCE_0)); } else { m_buttonBack.enable(); } if (m_dialogIndex == (m_dialogData.getResources().size() - 1)) { m_buttonNext.disable( org.opencms.ade.postupload.client.Messages.get().key( org.opencms.ade.postupload.client.Messages.GUI_DIALOG_INFO_LAST_RESOURCE_0)); } else { m_buttonNext.enable(); } } m_uploadPropertyPanel = new CmsUploadPropertyPanel(this, m_dialogData, m_panelData); m_dialogContent.setWidget(m_uploadPropertyPanel); m_frameDialog.setWidth(600); if (!m_frameDialog.isShowing()) { m_frameDialog.show(); m_dialogContent.onResizeDescendant(); } m_uploadPropertyPanel.truncate("POST_UPLOAD_DIALOG", 600); } /** * Creates the buttons.

*/ private void createButtons() { m_buttonClose.setButtonStyle(ButtonStyle.TEXT, ButtonColor.GREEN); m_buttonClose.setTitle(Messages.get().key(Messages.GUI_DIALOG_BUTTON_CLOSE_0)); m_buttonClose.setText(Messages.get().key(Messages.GUI_DIALOG_BUTTON_CLOSE_0)); m_buttonClose.setUseMinWidth(true); m_buttonClose.addClickHandler(new ClickHandler() { /** * @see com.google.gwt.event.dom.client.ClickHandler#onClick(com.google.gwt.event.dom.client.ClickEvent) */ public void onClick(ClickEvent event) { actionClose(); } }); m_frameDialog.addButton(m_buttonClose); if (m_dialogData.getResources().size() > 1) { m_buttonNext.setTitle(Messages.get().key(Messages.GUI_DIALOG_BUTTON_NEXT_0)); m_buttonNext.setText(Messages.get().key(Messages.GUI_DIALOG_BUTTON_NEXT_0)); m_buttonNext.setUseMinWidth(true); m_buttonNext.addClickHandler(new ClickHandler() { /** * @see com.google.gwt.event.dom.client.ClickHandler#onClick(com.google.gwt.event.dom.client.ClickEvent) */ public void onClick(ClickEvent event) { actionNext(); } }); m_frameDialog.addButton(m_buttonNext); m_buttonBack.setTitle(Messages.get().key(Messages.GUI_DIALOG_BUTTON_BACK_0)); m_buttonBack.setText(Messages.get().key(Messages.GUI_DIALOG_BUTTON_BACK_0)); m_buttonBack.setUseMinWidth(true); m_buttonBack.addClickHandler(new ClickHandler() { /** * @see com.google.gwt.event.dom.client.ClickHandler#onClick(com.google.gwt.event.dom.client.ClickEvent) */ public void onClick(ClickEvent event) { actionBack(); } }); m_frameDialog.addButton(m_buttonBack); } if (isExplorerMode() && (m_resources.size() == 1)) { m_buttonAdvanced.setButtonStyle(ButtonStyle.TEXT, ButtonColor.RED); m_buttonAdvanced.setTitle(Messages.get().key(Messages.GUI_DIALOG_BUTTON_ADVANCED_0)); m_buttonAdvanced.setText(Messages.get().key(Messages.GUI_DIALOG_BUTTON_ADVANCED_0)); m_buttonAdvanced.setUseMinWidth(true); m_buttonAdvanced.addClickHandler(new ClickHandler() { /** * @see com.google.gwt.event.dom.client.ClickHandler#onClick(com.google.gwt.event.dom.client.ClickEvent) */ public void onClick(ClickEvent event) { actionAdvanced(); } }); m_frameDialog.addButton(m_buttonAdvanced); } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy