Java tutorial
/** * openkm, Open Document Management System (http://www.openkm.com) * Copyright (c) 2006-2013 Paco Avila & Josep Llort * * No bytes were intentionally harmed during the development of this application. * * This program 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 2 of the License, or * (at your option) any later version. * * This program 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 this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ package com.ikon.frontend.client.widget; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.DialogBox; import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.VerticalPanel; import com.ikon.frontend.client.Main; import com.ikon.frontend.client.bean.GWTTaskInstance; import com.ikon.frontend.client.bean.form.GWTButton; import com.ikon.frontend.client.constants.ui.UIDesktopConstants; import com.ikon.frontend.client.constants.ui.UIDockPanelConstants; import com.ikon.frontend.client.widget.Dragable.ObjectToMove; import com.ikon.frontend.client.widget.form.FormManager.ValidationButton; import com.ikon.frontend.client.widget.form.HasWorkflow; import com.ikon.frontend.client.widget.popup.StampPopup; import com.ikon.frontend.client.widget.properties.CategoryManager.CategoryToRemove; import com.ikon.frontend.client.widget.properties.KeywordManager.KeywordToRemove; import com.ikon.frontend.client.widget.properties.Notes.NoteToDelete; import eu.maydu.gwt.validation.client.ValidationProcessor; /** * Confirm panel * * @author jllort * */ public class ConfirmPopup extends DialogBox { public static final int NO_ACTION = 0; public static final int CONFIRM_DELETE_FOLDER = 1; public static final int CONFIRM_DELETE_DOCUMENT = 2; public static final int CONFIRM_EMPTY_TRASH = 3; public static final int CONFIRM_PURGE_FOLDER = 4; public static final int CONFIRM_PURGE_DOCUMENT = 5; public static final int CONFIRM_DELETE_PROPERTY_GROUP = 6; public static final int CONFIRM_PURGE_VERSION_HISTORY_DOCUMENT = 7; public static final int CONFIRM_RESTORE_HISTORY_DOCUMENT = 8; public static final int CONFIRM_SET_DEFAULT_HOME = 9; public static final int CONFIRM_DELETE_SAVED_SEARCH = 10; public static final int CONFIRM_DELETE_USER_NEWS = 11; public static final int CONFIRM_DELETE_MAIL = 12; public static final int CONFIRM_PURGE_MAIL = 13; public static final int CONFIRM_GET_POOLED_WORKFLOW_TASK = 14; public static final int CONFIRM_FORCE_UNLOCK = 15; public static final int CONFIRM_FORCE_CANCEL_CHECKOUT = 16; public static final int CONFIRM_WORKFLOW_ACTION = 17; public static final int CONFIRM_DELETE_NOTE_DOCUMENT = 18; public static final int CONFIRM_DELETE_NOTE_FOLDER = 19; public static final int CONFIRM_DELETE_NOTE_MAIL = 20; public static final int CONFIRM_DRAG_DROP_MOVE_DOCUMENT = 21; public static final int CONFIRM_DRAG_DROP_MOVE_FOLDER_FROM_TREE = 22; public static final int CONFIRM_DRAG_DROP_MOVE_FOLDER_FROM_BROWSER = 23; public static final int CONFIRM_DRAG_DROP_MOVE_MAIL = 24; public static final int CONFIRM_DELETE_CATEGORY_FOLDER = 25; public static final int CONFIRM_DELETE_CATEGORY_DOCUMENT = 26; public static final int CONFIRM_DELETE_CATEGORY_MAIL = 27; public static final int CONFIRM_DELETE_KEYWORD_FOLDER = 28; public static final int CONFIRM_DELETE_KEYWORD_DOCUMENT = 29; public static final int CONFIRM_DELETE_KEYWORD_MAIL = 30; public static final int CONFIRM_DELETE_MASSIVE = 31; public static final int CONFIRM_LOGOUT_DOCUMENTS_CHECKOUT = 32; public static final int CONFIRM_SIGN_DOCUMENT = 33; public static final int CONFIRM_STAMP_DOCUMENT = 34; public static final int CONFIRM_ANNOTATE_DOCUMENT = 35; public static final int CONFIRM_DELETE_PFX = 36; public static final int CONFIRM_DELETE_RETENTION_POLICY = 37; public static final int CONFIRM_MASSIVE_PURGE_DOCUMENTS = 38; public static final int CONFIRM_DELETE_STAPLE_GROUP = 39; private VerticalPanel vPanel; private HorizontalPanel hPanel; private HTML text; private Button cancelButton; private Button acceptButton; private int action = 0; private Object object; /** * Confirm popup */ public ConfirmPopup() { // Establishes auto-close when click outside super(false, true); vPanel = new VerticalPanel(); hPanel = new HorizontalPanel(); text = new HTML(); text.setStyleName("okm-NoWrap"); cancelButton = new Button(Main.i18n("button.cancel"), new ClickHandler() { @Override public void onClick(ClickEvent event) { hide(); } }); acceptButton = new Button(Main.i18n("button.accept"), new ClickHandler() { @Override public void onClick(ClickEvent event) { execute(); hide(); } }); vPanel.setWidth("300px"); vPanel.setHeight("100px"); cancelButton.setStyleName("okm-NoButton"); acceptButton.setStyleName("okm-YesButton"); text.setHTML(""); hPanel.add(cancelButton); hPanel.add(new HTML(" ")); hPanel.add(acceptButton); vPanel.add(new HTML("<br>")); vPanel.add(text); vPanel.add(new HTML("<br>")); vPanel.add(hPanel); vPanel.add(new HTML("<br>")); vPanel.setCellHorizontalAlignment(text, VerticalPanel.ALIGN_CENTER); vPanel.setCellHorizontalAlignment(hPanel, VerticalPanel.ALIGN_CENTER); super.hide(); setWidget(vPanel); } /** * Execute the confirmed action */ private void execute() { switch (action) { case CONFIRM_DELETE_FOLDER: if (Main.get().mainPanel.desktop.browser.fileBrowser.isPanelSelected()) { Main.get().mainPanel.desktop.browser.fileBrowser.delete(); } else if (Main.get().activeFolderTree.isPanelSelected()) { Main.get().activeFolderTree.delete(); } break; case CONFIRM_DELETE_DOCUMENT: if (Main.get().mainPanel.desktop.browser.fileBrowser.isPanelSelected()) { Main.get().mainPanel.desktop.browser.fileBrowser.delete(); } break; case CONFIRM_EMPTY_TRASH: // Ensures DESKTOP view is enabled if (Main.get().mainPanel.topPanel.tabWorkspace.getSelectedWorkspace() != UIDockPanelConstants.DESKTOP) { Main.get().mainPanel.topPanel.tabWorkspace.changeSelectedTab(UIDockPanelConstants.DESKTOP); } //Ensures that trash view is enabled if (Main.get().mainPanel.desktop.navigator.getStackIndex() != UIDesktopConstants.NAVIGATOR_TRASH) { Main.get().mainPanel.desktop.navigator.stackPanel.showStack(UIDesktopConstants.NAVIGATOR_TRASH, false); } Main.get().activeFolderTree.purgeTrash(); break; case CONFIRM_PURGE_FOLDER: if (Main.get().mainPanel.desktop.browser.fileBrowser.isPanelSelected()) { Main.get().mainPanel.desktop.browser.fileBrowser.purge(); } else if (Main.get().activeFolderTree.isPanelSelected()) { Main.get().activeFolderTree.purge(); } break; case CONFIRM_PURGE_DOCUMENT: if (Main.get().mainPanel.desktop.browser.fileBrowser.isPanelSelected()) { Main.get().mainPanel.desktop.browser.fileBrowser.purge(); } break; case CONFIRM_DELETE_PROPERTY_GROUP: if (Main.get().mainPanel.topPanel.toolBar.isNodeDocument()) { Main.get().mainPanel.desktop.browser.tabMultiple.tabDocument.removePropertyGroup(); } else if (Main.get().mainPanel.topPanel.toolBar.isNodeFolder()) { Main.get().mainPanel.desktop.browser.tabMultiple.tabFolder.removePropertyGroup(); } else if (Main.get().mainPanel.topPanel.toolBar.isNodeMail()) { Main.get().mainPanel.desktop.browser.tabMultiple.tabMail.removePropertyGroup(); } // Always if a property group is deleted add property button on tool bar must be enabled, we execute to ensure this Main.get().mainPanel.topPanel.toolBar.enableAddPropertyGroup(); break; case CONFIRM_PURGE_VERSION_HISTORY_DOCUMENT: Main.get().mainPanel.desktop.browser.tabMultiple.tabDocument.version.purgeVersionHistory(); break; case CONFIRM_RESTORE_HISTORY_DOCUMENT: if (object != null && object instanceof String) { Main.get().mainPanel.desktop.browser.tabMultiple.tabDocument.version .restoreVersion((String) object); } break; case CONFIRM_SET_DEFAULT_HOME: Main.get().mainPanel.topPanel.mainMenu.bookmark.setUserHome(); break; case CONFIRM_DELETE_SAVED_SEARCH: Main.get().mainPanel.search.historySearch.searchSaved.deleteSearch(); break; case CONFIRM_DELETE_USER_NEWS: Main.get().mainPanel.search.historySearch.userNews.deleteSearch(); break; case CONFIRM_DELETE_MAIL: if (Main.get().mainPanel.desktop.browser.fileBrowser.isPanelSelected()) { Main.get().mainPanel.desktop.browser.fileBrowser.delete(); } break; case CONFIRM_PURGE_MAIL: if (Main.get().mainPanel.desktop.browser.fileBrowser.isPanelSelected()) { Main.get().mainPanel.desktop.browser.fileBrowser.purge(); } break; case CONFIRM_GET_POOLED_WORKFLOW_TASK: Main.get().mainPanel.dashboard.workflowDashboard.setTaskInstanceActorId(); break; case CONFIRM_FORCE_UNLOCK: Main.get().mainPanel.desktop.browser.fileBrowser.forceUnlock(); break; case CONFIRM_FORCE_CANCEL_CHECKOUT: Main.get().mainPanel.desktop.browser.fileBrowser.forceCancelCheckout(); break; case CONFIRM_WORKFLOW_ACTION: if (object != null && object instanceof ValidationButton) { ValidationButton validationButton = (ValidationButton) object; GWTButton gWTButton = validationButton.getButton(); ValidationProcessor validationProcessor = validationButton.getValidationProcessor(); HasWorkflow workflow = validationButton.getWorkflow(); GWTTaskInstance taskInstance = validationButton.getTaskInstance(); if (gWTButton.isValidate()) { if (validationProcessor.validate()) { if (gWTButton.getTransition().equals("")) { workflow.setTaskInstanceValues(taskInstance.getId(), null); } else { workflow.setTaskInstanceValues(taskInstance.getId(), gWTButton.getTransition()); } validationButton.disableAllButtonList(); } } else { if (gWTButton.getTransition().equals("")) { workflow.setTaskInstanceValues(taskInstance.getId(), null); } else { workflow.setTaskInstanceValues(taskInstance.getId(), gWTButton.getTransition()); } validationButton.disableAllButtonList(); } } break; case CONFIRM_DELETE_NOTE_DOCUMENT: if (object != null && object instanceof NoteToDelete) { NoteToDelete noteToDelete = (NoteToDelete) object; Main.get().mainPanel.desktop.browser.tabMultiple.tabDocument.notes .deleteNote(noteToDelete.getNotePath(), noteToDelete.getRow()); } break; case CONFIRM_DELETE_NOTE_FOLDER: if (object != null && object instanceof NoteToDelete) { NoteToDelete noteToDelete = (NoteToDelete) object; Main.get().mainPanel.desktop.browser.tabMultiple.tabFolder.notes .deleteNote(noteToDelete.getNotePath(), noteToDelete.getRow()); } break; case CONFIRM_DELETE_NOTE_MAIL: if (object != null && object instanceof NoteToDelete) { NoteToDelete noteToDelete = (NoteToDelete) object; Main.get().mainPanel.desktop.browser.tabMultiple.tabMail.notes .deleteNote(noteToDelete.getNotePath(), noteToDelete.getRow()); } break; case CONFIRM_DRAG_DROP_MOVE_DOCUMENT: Main.get().dragable.modeDocument((ObjectToMove) object); break; case CONFIRM_DRAG_DROP_MOVE_FOLDER_FROM_TREE: Main.get().dragable.modeFolderFromTree((ObjectToMove) object); break; case CONFIRM_DRAG_DROP_MOVE_FOLDER_FROM_BROWSER: Main.get().dragable.modeFolderFromBrowser((ObjectToMove) object); break; case CONFIRM_DRAG_DROP_MOVE_MAIL: Main.get().dragable.modeMail((ObjectToMove) object); break; case CONFIRM_DELETE_CATEGORY_FOLDER: Main.get().mainPanel.desktop.browser.tabMultiple.tabFolder.folder .removeCategory((CategoryToRemove) object); break; case CONFIRM_DELETE_CATEGORY_DOCUMENT: Main.get().mainPanel.desktop.browser.tabMultiple.tabDocument.document .removeCategory((CategoryToRemove) object); break; case CONFIRM_DELETE_CATEGORY_MAIL: Main.get().mainPanel.desktop.browser.tabMultiple.tabMail.mail.removeCategory((CategoryToRemove) object); break; case CONFIRM_DELETE_KEYWORD_FOLDER: Main.get().mainPanel.desktop.browser.tabMultiple.tabFolder.folder .removeKeyword((KeywordToRemove) object); break; case CONFIRM_DELETE_KEYWORD_DOCUMENT: Main.get().mainPanel.desktop.browser.tabMultiple.tabDocument.document .removeKeyword((KeywordToRemove) object); break; case CONFIRM_DELETE_KEYWORD_MAIL: Main.get().mainPanel.desktop.browser.tabMultiple.tabMail.mail.removeKeyword((KeywordToRemove) object); break; case CONFIRM_DELETE_MASSIVE: Main.get().mainPanel.desktop.browser.fileBrowser.deleteMasive(); break; case CONFIRM_LOGOUT_DOCUMENTS_CHECKOUT: Main.get().logoutPopup.logout(); break; case CONFIRM_SIGN_DOCUMENT: Main.get().previewPopup.hide(); Main.get().previewPopup.signDocument(); break; case CONFIRM_STAMP_DOCUMENT: Main.get().previewPopup.hide(); StampPopup stampPopup = new StampPopup(); stampPopup.setWidth("300px"); stampPopup.setHeight("100px"); stampPopup.setStyleName("okm-Popup"); stampPopup.addStyleName("okm-DisableSelect"); stampPopup.show(); break; case CONFIRM_ANNOTATE_DOCUMENT: break; case CONFIRM_DELETE_PFX: Main.get().registerPFXPopup.deletePFX(); break; case CONFIRM_DELETE_RETENTION_POLICY: Main.get().retentionPolicyPopup.delete(); break; case CONFIRM_MASSIVE_PURGE_DOCUMENTS: Main.get().mainPanel.desktop.browser.fileBrowser.purgeMassive(); break; case CONFIRM_DELETE_STAPLE_GROUP: Stapling.get().deleteStaplingGroup(); break; } action = NO_ACTION; // Resets action value } /** * Sets the action to be confirmed * * @param action The action to be confirmed */ public void setConfirm(int action) { this.action = action; switch (action) { case CONFIRM_DELETE_FOLDER: text.setHTML(Main.i18n("confirm.delete.folder")); break; case CONFIRM_DELETE_DOCUMENT: text.setHTML(Main.i18n("confirm.delete.document")); break; case CONFIRM_EMPTY_TRASH: text.setHTML(Main.i18n("confirm.delete.trash")); break; case CONFIRM_PURGE_FOLDER: text.setHTML(Main.i18n("confirm.purge.folder")); break; case CONFIRM_PURGE_DOCUMENT: text.setHTML(Main.i18n("confirm.purge.document")); break; case CONFIRM_DELETE_PROPERTY_GROUP: text.setHTML(Main.i18n("confirm.delete.propety.group")); break; case CONFIRM_PURGE_VERSION_HISTORY_DOCUMENT: text.setHTML(Main.i18n("confirm.purge.version.history.document")); break; case CONFIRM_RESTORE_HISTORY_DOCUMENT: text.setHTML(Main.i18n("confirm.purge.restore.document")); break; case CONFIRM_SET_DEFAULT_HOME: text.setHTML(Main.i18n("confirm.set.default.home")); break; case CONFIRM_DELETE_SAVED_SEARCH: text.setHTML(Main.i18n("confirm.delete.saved.search")); break; case CONFIRM_DELETE_USER_NEWS: text.setHTML(Main.i18n("confirm.delete.user.news")); break; case CONFIRM_DELETE_MAIL: text.setHTML(Main.i18n("confirm.delete.mail")); break; case CONFIRM_GET_POOLED_WORKFLOW_TASK: text.setHTML(Main.i18n("confirm.get.pooled.workflow.task")); break; case CONFIRM_FORCE_UNLOCK: text.setHTML(Main.i18n("confirm.force.unlock")); break; case CONFIRM_FORCE_CANCEL_CHECKOUT: text.setHTML(Main.i18n("confirm.force.cancel.checkout")); break; case CONFIRM_WORKFLOW_ACTION: break; case CONFIRM_DELETE_NOTE_DOCUMENT: text.setHTML(Main.i18n("confirm.delete.note")); break; case CONFIRM_DELETE_NOTE_FOLDER: text.setHTML(Main.i18n("confirm.delete.note")); break; case CONFIRM_DELETE_NOTE_MAIL: text.setHTML(Main.i18n("confirm.delete.note")); break; case CONFIRM_DRAG_DROP_MOVE_DOCUMENT: text.setHTML(Main.i18n("confirm.dragdrop.document")); break; case CONFIRM_DRAG_DROP_MOVE_FOLDER_FROM_TREE: case CONFIRM_DRAG_DROP_MOVE_FOLDER_FROM_BROWSER: text.setHTML(Main.i18n("confirm.dragdrop.folder")); break; case CONFIRM_DRAG_DROP_MOVE_MAIL: text.setHTML(Main.i18n("confirm.dragdrop.mail")); break; case CONFIRM_DELETE_CATEGORY_FOLDER: case CONFIRM_DELETE_CATEGORY_DOCUMENT: case CONFIRM_DELETE_CATEGORY_MAIL: text.setHTML(Main.i18n("confirm.category.delete")); break; case CONFIRM_DELETE_KEYWORD_FOLDER: case CONFIRM_DELETE_KEYWORD_DOCUMENT: case CONFIRM_DELETE_KEYWORD_MAIL: text.setHTML(Main.i18n("confirm.keyword.delete")); break; case CONFIRM_DELETE_MASSIVE: text.setHTML(Main.i18n("confirm.massive.delete")); break; case CONFIRM_LOGOUT_DOCUMENTS_CHECKOUT: text.setHTML(Main.i18n("confirm.logout.documents.checkout")); break; case CONFIRM_SIGN_DOCUMENT: text.setHTML("Do you want to sign this document?"); break; case CONFIRM_STAMP_DOCUMENT: text.setHTML("Do you want to stamp this document?"); break; case CONFIRM_ANNOTATE_DOCUMENT: text.setHTML("Do you want to save these annotations?"); break; case CONFIRM_DELETE_PFX: text.setHTML("Your signature is already configured. <br>Do you want to delete it?"); break; case CONFIRM_DELETE_RETENTION_POLICY: text.setHTML("Do you want to remove retention policy on this document?"); break; case CONFIRM_MASSIVE_PURGE_DOCUMENTS: text.setHTML(Main.i18n("confirm.massive.delete")); break; case CONFIRM_DELETE_STAPLE_GROUP: text.setHTML("Confirm delete staple group"); break; } } /** * setConfirmationText * * @param text */ public void setConfirmationText(String text) { this.text.setHTML(text); } /** * Language refresh */ public void langRefresh() { setText(Main.i18n("confirm.label")); cancelButton.setText(Main.i18n("button.cancel")); acceptButton.setText(Main.i18n("button.accept")); } /** * Sets the value to object * * @param object The object to set */ public void setValue(Object object) { this.object = object; } /** * Get the object value * * @return The object */ public Object getValue() { return this.object; } /** * Shows de popup */ public void show() { setText(Main.i18n("confirm.label")); int left = (Window.getClientWidth() - 300) / 2; int top = (Window.getClientHeight() - 125) / 2; setPopupPosition(left, top); super.show(); } }