/**
* OpenKM, Open Document Management System (http://www.openkm.com)
* Copyright (c) 2006-2011 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.openkm.frontend.client.widget.filebrowser.menu;
import java.util.ArrayList;
import java.util.Arrays;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.ui.FileUpload;
import com.google.gwt.user.client.ui.MenuBar;
import com.google.gwt.user.client.ui.MenuItem;
import com.openkm.frontend.client.Main;
import com.openkm.frontend.client.bean.FileToUpload;
import com.openkm.frontend.client.bean.GWTAvailableOption;
import com.openkm.frontend.client.bean.GWTDocument;
import com.openkm.frontend.client.bean.GWTFolder;
import com.openkm.frontend.client.bean.GWTMail;
import com.openkm.frontend.client.bean.GWTPermission;
import com.openkm.frontend.client.contants.ui.UIFileUploadConstants;
import com.openkm.frontend.client.util.Util;
import com.openkm.frontend.client.widget.MenuBase;
/**
* Browser my documents menu
*
* @author jllort
*
*/
public class PersonalMenu extends MenuBase {
private boolean checkoutOption = false;
private boolean checkinOption = false;
private boolean deleteOption = false;
private boolean renameOption = false;
private boolean zohoOption = false; //added by vissu on feb19 for zohoapi
private boolean cancelCheckoutOption= false;
private boolean downloadOption = false;
private boolean lockOption = false;
private boolean unlockOption = false;
private boolean moveOption = false;
private boolean copyOption = false;
private boolean exportOption = false;
private MenuBar dirMenu;
private MenuItem checkout;
private MenuItem checkin;
private MenuItem cancelCheckout;
private MenuItem zoho; //added by vissu on feb19 for zohoapi
private MenuItem delete;
private MenuItem rename;
private MenuItem download;
private MenuItem lock;
private MenuItem unlock;
private MenuItem move;
private MenuItem copy;
private MenuItem export;
/**
* Browser menu
*/
public PersonalMenu() {
// The item selected must be called on style.css : .okm-MenuBar .gwt-MenuItem-selected
// First initialize language values
dirMenu = new MenuBar(true);
download = new MenuItem(Util.menuHTML("img/icon/actions/download.gif", Main.i18n("filebrowser.menu.download")), true, downloadFile);
download.addStyleName("okm-MenuItem-strike");
dirMenu.addItem(download);
checkout = new MenuItem(Util.menuHTML("img/icon/actions/checkout.gif", Main.i18n("filebrowser.menu.checkout")), true, checkoutFile);
checkout.addStyleName("okm-MenuItem-strike");
dirMenu.addItem(checkout);
checkin = new MenuItem(Util.menuHTML("img/icon/actions/checkin.gif", Main.i18n("filebrowser.menu.checkin")), true, checkinFile);
checkin.addStyleName("okm-MenuItem-strike");
dirMenu.addItem(checkin);
cancelCheckout = new MenuItem(Util.menuHTML("img/icon/actions/cancel_checkout.gif", Main.i18n("filebrowser.menu.checkout.cancel")), true, cancelCheckinFile);
cancelCheckout.addStyleName("okm-MenuItem-strike");
dirMenu.addItem(cancelCheckout);
lock = new MenuItem(Util.menuHTML("img/icon/actions/lock.gif", Main.i18n("filebrowser.menu.lock")), true, lockFile);
lock.addStyleName("okm-MenuItem-strike");
dirMenu.addItem(lock);
unlock = new MenuItem(Util.menuHTML("img/icon/actions/unlock.gif", Main.i18n("filebrowser.menu.unlock")), true, unlockFile);
unlock.addStyleName("okm-MenuItem-strike");
dirMenu.addItem(unlock);
delete = new MenuItem(Util.menuHTML("img/icon/actions/delete.gif", Main.i18n("filebrowser.menu.delete")), true, deleteFile);
delete.addStyleName("okm-MenuItem-strike");
dirMenu.addItem(delete);
rename = new MenuItem(Util.menuHTML("img/icon/actions/rename.gif", Main.i18n("filebrowser.menu.rename")), true, renameFile);
rename.addStyleName("okm-MenuItem-strike");
dirMenu.addItem(rename);
move = new MenuItem(Util.menuHTML("img/icon/actions/move_document.gif", Main.i18n("filebrowser.menu.move")), true, moveFile);
move.addStyleName("okm-MenuItem-strike");
dirMenu.addItem(move);
copy = new MenuItem(Util.menuHTML("img/icon/actions/copy.gif", Main.i18n("filebrowser.menu.copy")), true, copyFile);
copy.addStyleName("okm-MenuItem-strike");
dirMenu.addItem(copy);
export = new MenuItem(Util.menuHTML("img/icon/actions/export.gif", Main.i18n("filebrowser.menu.export")), true, exportToFile);
export.addStyleName("okm-MenuItem-strike");
dirMenu.addItem(export);
//added by vissu on feb19 for zohoapi
zoho = new MenuItem(Util.menuHTML("img/icon/actions/zoho.gif", Main.i18n("filebrowser.menu.zoho")), true, zohoFile);
checkin.addStyleName("okm-MenuItem-strike");
dirMenu.addItem(zoho);
dirMenu.setStyleName("okm-MenuBar");
initWidget(dirMenu);
}
// Command menu to download file
Command downloadFile = new Command() {
public void execute() {
if (downloadOption) {
Main.get().mainPanel.desktop.browser.fileBrowser.table.downloadDocument(false);
hide();
}
}
};
// Command menu to checkout file
Command checkoutFile = new Command() {
public void execute() {
if (checkoutOption) {
Main.get().mainPanel.desktop.browser.fileBrowser.checkout();
hide();
}
}
};
//added by vissu on feb19 for zohoapi
// Command menu to checkout file
Command zohoFile = new Command() {
public void execute() {
if (zohoOption) {
Main.get().mainPanel.desktop.browser.fileBrowser.zoho();
hide();
}
}
};
// Command menu to checkin file
Command checkinFile = new Command() {
public void execute() {
if (checkinOption) {
FileToUpload fileToUpload = new FileToUpload();
fileToUpload.setFileUpload(new FileUpload());
fileToUpload.setPath(Main.get().mainPanel.desktop.browser.fileBrowser.getPath());
fileToUpload.setAction(UIFileUploadConstants.ACTION_UPDATE);
fileToUpload.setEnableAddButton(false);
fileToUpload.setEnableImport(false);
Main.get().fileUpload.enqueueFileToUpload(new ArrayList<FileToUpload>(Arrays.asList(fileToUpload)));
hide();
}
}
};
// Command menu to cancel checkin file
Command cancelCheckinFile = new Command() {
public void execute() {
if (cancelCheckoutOption) {
Main.get().mainPanel.desktop.browser.fileBrowser.cancelCheckout();
hide();
}
}
};
// Command menu to lock file
Command lockFile = new Command() {
public void execute() {
if (lockOption) {
Main.get().mainPanel.desktop.browser.fileBrowser.lock();
hide();
}
}
};
// Command menu to unlock file
Command unlockFile = new Command() {
public void execute() {
if (unlockOption) {
Main.get().mainPanel.desktop.browser.fileBrowser.unlock();
hide();
}
}
};
// Command menu to lock file
Command deleteFile = new Command() {
public void execute() {
if (deleteOption) {
Main.get().mainPanel.desktop.browser.fileBrowser.confirmDelete();
hide();
}
}
};
// Command menu to rename file
Command renameFile = new Command() {
public void execute() {
if (renameOption) {
Main.get().mainPanel.desktop.browser.fileBrowser.rename();
hide();
}
}
};
// Command menu to rename file
Command moveFile = new Command() {
public void execute() {
if (moveOption) {
Main.get().mainPanel.desktop.browser.fileBrowser.move();
hide();
}
}
};
// Command menu to rename file
Command copyFile = new Command() {
public void execute() {
if (copyOption) {
Main.get().mainPanel.desktop.browser.fileBrowser.copy();
hide();
}
}
};
// Command menu to set default home
Command exportToFile = new Command() {
public void execute() {
if (exportOption) {
Main.get().mainPanel.desktop.browser.fileBrowser.exportFolderToFile();
hide();
}
}
};
/**
* Refresh language values
*/
public void langRefresh() {
checkout.setHTML(Util.menuHTML("img/icon/actions/checkout.gif", Main.i18n("filebrowser.menu.checkout")));
checkin.setHTML(Util.menuHTML("img/icon/actions/checkin.gif", Main.i18n("filebrowser.menu.checkin")));
delete.setHTML(Util.menuHTML("img/icon/actions/delete.gif", Main.i18n("filebrowser.menu.delete")));
rename.setHTML(Util.menuHTML("img/icon/actions/rename.gif", Main.i18n("filebrowser.menu.rename")));
cancelCheckout.setHTML(Util.menuHTML("img/icon/actions/cancel_checkout.gif", Main.i18n("filebrowser.menu.checkout.cancel")));
lock.setHTML(Util.menuHTML("img/icon/actions/lock.gif", Main.i18n("filebrowser.menu.lock")));
unlock.setHTML(Util.menuHTML("img/icon/actions/unlock.gif", Main.i18n("filebrowser.menu.unlock")));
download.setHTML(Util.menuHTML("img/icon/actions/download.gif", Main.i18n("filebrowser.menu.download")));
move.setHTML(Util.menuHTML("img/icon/actions/move_document.gif", Main.i18n("filebrowser.menu.move")));
copy.setHTML(Util.menuHTML("img/icon/actions/copy.gif", Main.i18n("filebrowser.menu.copy")));
export.setHTML(Util.menuHTML("img/icon/actions/export.gif", Main.i18n("filebrowser.menu.export")));
//added by vissu on feb19 for zohoapi
zoho.setHTML(Util.menuHTML("img/icon/actions/zoho.gif", Main.i18n("filebrowser.menu.zoho")));
}
/**
* Checks permissions associated to folder and menu options enabled actions
*
* @param folder The folder
*/
public void checkMenuOptionPermissions(GWTFolder folder, GWTFolder folderParent) {
downloadOption = false;
checkoutOption = false;
zohoOption = false; //added by vissu on feb19 for zohoapi
checkinOption = false;
cancelCheckoutOption = false;
lockOption = false;
unlockOption = false;
copyOption = true;
exportOption = true;
if ( (folder.getPermissions() & GWTPermission.WRITE) == GWTPermission.WRITE &&
(folderParent.getPermissions() & GWTPermission.WRITE) == GWTPermission.WRITE ) {
deleteOption = true;
renameOption = true;
moveOption = true;
} else {
deleteOption = false;
renameOption = false;
moveOption = false;
}
}
/**
* Checks permissions associated to document and menu options enabled actions
*
* @param doc The document
*/
public void checkMenuOptionPermissions(GWTDocument doc, GWTFolder folder) {
String user = Main.get().workspaceUserProperties.getUser();
downloadOption = true;
checkinOption = false;
cancelCheckoutOption = false;
unlockOption = false;
copyOption = true;
exportOption = false;
if ( (doc.getPermissions() & GWTPermission.WRITE) == GWTPermission.WRITE) {
lockOption = true;
checkoutOption = true;
zohoOption = true; //added by vissu on feb19 for zohoapi
if ( (folder.getPermissions() & GWTPermission.WRITE) == GWTPermission.WRITE) {
renameOption = true;
deleteOption = true;
moveOption = true;
} else {
renameOption = false;
deleteOption = false;
moveOption = false;
}
} else {
lockOption = false;
deleteOption = false;
renameOption = false;
checkoutOption = false;
moveOption = false;
zohoOption = false; //added by vissu on feb19 for zohoapi
}
if (doc.isCheckedOut()){
lockOption = false;
unlockOption = false;
checkoutOption = false;
if (doc.getLockInfo().getOwner().equals(user)) {
checkinOption = true;
cancelCheckoutOption = true;
} else {
checkinOption = false;
cancelCheckoutOption = false;
}
deleteOption = false;
renameOption = false;
moveOption = false;
} else if (doc.isLocked()){
lockOption = false;
if (doc.getLockInfo().getOwner().equals(user)) {
unlockOption = true;
} else {
unlockOption = false;
}
checkoutOption = false;
checkinOption = false;
cancelCheckoutOption = false;
deleteOption = false;
renameOption = false;
moveOption = false;
} else {
unlockOption = false;
checkinOption = false;
cancelCheckoutOption = false;
}
}
/**
* Checks permissions associated to mail and menu options enabled actions
*
* @param mail The mail
*/
public void checkMenuOptionPermissions(GWTMail mail, GWTFolder folder) {
downloadOption = false;
checkinOption = false;
cancelCheckoutOption = false;
unlockOption = false;
copyOption = true;
exportOption = false;
lockOption = false;
checkoutOption = false;
renameOption = false;
if ( (mail.getPermissions() & GWTPermission.WRITE) == GWTPermission.WRITE) {
if ( (folder.getPermissions() & GWTPermission.WRITE) == GWTPermission.WRITE) {
deleteOption = true;
moveOption = true;
} else {
deleteOption = false;
moveOption = false;
}
} else {
deleteOption = false;
moveOption = false;
}
}
/**
* Disables all menu options
*/
public void disableAllMenuOption() {
downloadOption = false;
deleteOption = false;
renameOption = false;
checkoutOption = false;
zohoOption = false; //added by vissu on feb19 for zohoapi
checkinOption = false;
cancelCheckoutOption = false;
lockOption = false;
unlockOption = false;
moveOption = false;
exportOption = false;
}
/**
* Evaluates menu options
*/
public void evaluateMenuOptions() {
if (downloadOption){enable(download);} else {disable(download);}
if (deleteOption){enable(delete);} else {disable(delete);}
if (renameOption){enable(rename);} else {disable(rename);}
if (checkoutOption){enable(checkout);} else {disable(checkout);}
if (zohoOption){enable(zoho);} else {disable(zoho);} //added by vissu on feb19 for zohoapi
if (checkinOption){enable(checkin);} else {disable(checkin);}
if (cancelCheckoutOption){enable(cancelCheckout);} else {disable(cancelCheckout);}
if (lockOption){enable(lock);} else {disable(lock);}
if (unlockOption){enable(unlock);} else {disable(unlock);}
if (moveOption){enable(move);} else {disable(move);}
if (copyOption){enable(copy);} else {disable(copy);}
if (exportOption){enable(export);} else {disable(export);}
}
@Override
public void setAvailableOption(GWTAvailableOption option) {
download.setVisible(option.isDownloadOption());
delete.setVisible(option.isDeleteOption());
rename.setVisible(option.isRenameOption());
checkout.setVisible(option.isCheckoutOption());
zoho.setVisible(option.isZohoOption()); //added by vissu on feb19 for zohoapi
checkin.setVisible(option.isCheckinOption());
cancelCheckout.setVisible(option.isCancelCheckoutOption());
lock.setVisible(option.isLockOption());
unlock.setVisible(option.isUnLockOption());
move.setVisible(option.isMoveOption());
copy.setVisible(option.isCopyOption());
export.setVisible(option.isExportOption());
}
/**
* Hide popup menu
*/
public void hide() {
Main.get().mainPanel.desktop.browser.fileBrowser.personalMenuPopup.hide();
}
/* (non-Javadoc)
* @see com.openkm.frontend.client.widget.MenuBase#enableAllMenuOptions()
*/
public void enableAllMenuOptions(){
}
/* (non-Javadoc)
* @see com.openkm.frontend.client.widget.MenuBase#enableRootMenuOptions()
*/
public void enableRootMenuOptions(){
}
}