/**
* 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;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import com.allen_sauer.gwt.log.client.Log;
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.gen2.table.client.FixedWidthFlexTable;
import com.google.gwt.gen2.table.client.FixedWidthGrid;
import com.google.gwt.gen2.table.client.AbstractScrollTable.ScrollTableImages;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.rpc.ServiceDefTarget;
import com.google.gwt.user.client.ui.AbstractImagePrototype;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Frame;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HasAlignment;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.openkm.frontend.client.Main;
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.contants.service.RPCService;
import com.openkm.frontend.client.contants.ui.UIDesktopConstants;
import com.openkm.frontend.client.extension.event.HasDocumentEvent;
import com.openkm.frontend.client.extension.event.HasFolderEvent;
import com.openkm.frontend.client.extension.event.HasMailEvent;
import com.openkm.frontend.client.extension.event.handler.DocumentHandlerExtension;
import com.openkm.frontend.client.extension.event.handler.FolderHandlerExtension;
import com.openkm.frontend.client.extension.event.handler.MailHandlerExtension;
import com.openkm.frontend.client.extension.event.hashandler.HasDocumentHandlerExtension;
import com.openkm.frontend.client.extension.event.hashandler.HasFolderHandlerExtension;
import com.openkm.frontend.client.extension.event.hashandler.HasMailHandlerExtension;
import com.openkm.frontend.client.service.OKMDocumentService;
import com.openkm.frontend.client.service.OKMDocumentServiceAsync;
import com.openkm.frontend.client.service.OKMFolderService;
import com.openkm.frontend.client.service.OKMFolderServiceAsync;
import com.openkm.frontend.client.service.OKMMailService;
import com.openkm.frontend.client.service.OKMMailServiceAsync;
import com.openkm.frontend.client.service.OKMNotifyService;
import com.openkm.frontend.client.service.OKMNotifyServiceAsync;
import com.openkm.frontend.client.util.Util;
import com.openkm.frontend.client.widget.ConfirmPopup;
import com.openkm.frontend.client.widget.MenuPopup;
import com.openkm.frontend.client.widget.OriginPanel;
import com.openkm.frontend.client.widget.eastereggs.Futurama;
import com.openkm.frontend.client.widget.filebrowser.menu.CategoriesMenu;
import com.openkm.frontend.client.widget.filebrowser.menu.MailMenu;
import com.openkm.frontend.client.widget.filebrowser.menu.PersonalMenu;
import com.openkm.frontend.client.widget.filebrowser.menu.TaxonomyMenu;
import com.openkm.frontend.client.widget.filebrowser.menu.TemplatesMenu;
import com.openkm.frontend.client.widget.filebrowser.menu.ThesaurusMenu;
import com.openkm.frontend.client.widget.filebrowser.menu.TrashMenu;
import com.openkm.frontend.client.widget.foldertree.FolderSelectPopup;
import com.openkm.frontend.client.widget.startup.StartUp;
import com.google.gwt.user.client.ui.DialogBox;
/**
* File browser panel
*
* @author jllort
*
*/
public class FileBrowser extends Composite implements OriginPanel, HasDocumentEvent, HasFolderEvent, HasMailEvent,
HasDocumentHandlerExtension, HasFolderHandlerExtension,
HasMailHandlerExtension {
public static final int STATUS_SIZE = 26;
// Definitions of fileBrowser actions
public static final int ACTION_NONE = -1;
public static final int ACTION_SECURITY_REFRESH_FOLDER = 0;
public static final int ACTION_SECURITY_REFRESH_DOCUMENT = 1;
public static final int ACTION_RENAME = 2;
public static final int ACTION_SECURITY_REFRESH_MAIL = 3;
// Number of columns
public static final int NUMBER_OF_COLUMNS = 8;
private final OKMFolderServiceAsync folderService = (OKMFolderServiceAsync) GWT.create(OKMFolderService.class);
private final OKMDocumentServiceAsync documentService = (OKMDocumentServiceAsync) GWT.create(OKMDocumentService.class);
private final OKMNotifyServiceAsync notifyService = (OKMNotifyServiceAsync) GWT.create(OKMNotifyService.class);
private final OKMMailServiceAsync mailService = (OKMMailServiceAsync) GWT.create(OKMMailService.class);
private Image separator;
public VerticalPanel panel;
public ExtendedScrollTable table;
private FixedWidthFlexTable headerTable;
private FixedWidthGrid dataTable;
private FilePath filePath;
public MenuPopup taxonomyMenuPopup;
public MenuPopup categoriesMenuPopup;
public MenuPopup thesaurusMenuPopup;
public MenuPopup trashMenuPopup;
public MenuPopup templatesMenuPopup;
public MenuPopup personalMenuPopup;
public MenuPopup mailMenuPopup;
public Status status;
private FileTextBox fileTextBox;
private String fldId;
private boolean panelSelected = false; // Indicates if panel is selected
private String selectedRowId = ""; // Used to continue selecting the same row before resfreshing the same directory
private String initialRowValueName = ""; // Used on rename to preserve initial value name
private GWTFolder tmpFolder;
public int fileBrowserAction = ACTION_NONE; // To control rename and create folder actions
private int actualView = UIDesktopConstants.NAVIGATOR_TAXONOMY; // Used to indicate the actual view
private HashMap<String, String> viewValues;
private boolean createdFromTemplate = false;
private int numberOfFolders = 0;
private int numberOfDocuments = 0;
private int numberOfMails = 0;
private List<DocumentHandlerExtension> docHandlerExtensionList;
private List<FolderHandlerExtension> folderHandlerExtensionList;
private List<MailHandlerExtension> mailHandlerExtensionList;
public FileBrowser() {
// Sets the actual view and view values hashMap object
actualView = UIDesktopConstants.NAVIGATOR_TAXONOMY;
viewValues = new HashMap<String, String>();
docHandlerExtensionList = new ArrayList<DocumentHandlerExtension>();
folderHandlerExtensionList = new ArrayList<FolderHandlerExtension>();
mailHandlerExtensionList = new ArrayList<MailHandlerExtension>();
panel = new VerticalPanel();
filePath = new FilePath();
ScrollTableImages scrollTableImages = new ScrollTableImages(){
/* (non-Javadoc)
* @see com.google.gwt.gen2.table.client.AbstractScrollTable.ScrollTableImages#scrollTableAscending()
*/
public AbstractImagePrototype scrollTableAscending() {
return new AbstractImagePrototype() {
public void applyTo(Image image) {
image.setUrl("img/sort_asc.gif");
}
public Image createImage() {
return new Image("img/sort_asc.gif");
}
public String getHTML(){
return "<img border=\"0\" src=\"img/sort_asc.gif\"/>";
}
};
}
/* (non-Javadoc)
* @see com.google.gwt.gen2.table.client.AbstractScrollTable.ScrollTableImages#scrollTableDescending()
*/
public AbstractImagePrototype scrollTableDescending() {
return new AbstractImagePrototype() {
public void applyTo(Image image) {
image.setUrl("img/sort_desc.gif");
}
public Image createImage() {
return new Image("img/sort_desc.gif");
}
public String getHTML(){
return "<img border=\"0\" src=\"img/sort_desc.gif\"/>";
}
};
}
/* (non-Javadoc)
* @see com.google.gwt.gen2.table.client.AbstractScrollTable.ScrollTableImages#scrollTableFillWidth()
*/
public AbstractImagePrototype scrollTableFillWidth() {
return new AbstractImagePrototype() {
public void applyTo(Image image) {
image.setUrl("img/fill_width.gif");
}
public Image createImage() {
return new Image("img/fill_width.gif");
}
public String getHTML(){
return "<img border=\"0\" src=\"img/fill_width.gif\"/>";
}
};
}
};
headerTable = new FixedWidthFlexTable();
dataTable = new FixedWidthGrid();
table = new ExtendedScrollTable(dataTable,headerTable,scrollTableImages);
table.setSize("540","140");
table.setCellSpacing(0);
table.setCellPadding(2);
// Level 1 headers
headerTable.setHTML(0,0," ");
headerTable.setHTML(0,1," ");
headerTable.setHTML(0,2,Main.i18n("filebrowser.name"));
headerTable.setHTML(0,3,Main.i18n("filebrowser.size"));
headerTable.setHTML(0,4,Main.i18n("filebrowser.date.update"));
headerTable.setHTML(0,5,Main.i18n("filebrowser.author"));
headerTable.setHTML(0,6,Main.i18n("filebrowser.version"));
headerTable.setHTML(0,7,"");
// Format
table.setColumnWidth(0,60);
table.setColumnWidth(1,25);
table.setColumnWidth(2,150);
table.setColumnWidth(3,100);
table.setColumnWidth(4,150);
table.setColumnWidth(5,110);
table.setColumnWidth(6,90);
table.setColumnWidth(7,0);
table.setPreferredColumnWidth(0, 60);
table.setPreferredColumnWidth(1, 25);
table.setPreferredColumnWidth(4, 150);
table.setColumnSortable(0, false);
headerTable.addStyleName("okm-DisableSelect");
table.addStyleName("okm-Input");
taxonomyMenuPopup = new MenuPopup(new TaxonomyMenu());
taxonomyMenuPopup.setStyleName("okm-FileBrowser-MenuPopup");
categoriesMenuPopup = new MenuPopup(new CategoriesMenu());
categoriesMenuPopup.setStyleName("okm-Tree-MenuPopup");
thesaurusMenuPopup = new MenuPopup(new ThesaurusMenu());
thesaurusMenuPopup.setStyleName("okm-Tree-MenuPopup");
trashMenuPopup = new MenuPopup(new TrashMenu());
trashMenuPopup.setStyleName("okm-Tree-MenuPopup");
templatesMenuPopup = new MenuPopup(new TemplatesMenu());
templatesMenuPopup.setStyleName("okm-Tree-MenuPopup");
personalMenuPopup = new MenuPopup(new PersonalMenu());
personalMenuPopup.setStyleName("okm-Tree-MenuPopup");
mailMenuPopup = new MenuPopup(new MailMenu());
mailMenuPopup.setStyleName("okm-Tree-MenuPopup");
status = new Status();
status.setStyleName("okm-StatusPopup");
fileTextBox = new FileTextBox();
separator = new Image("img/transparent_pixel.gif");
separator.setSize("100%", "4px");
separator.setStyleName("okm-FileBrowser-Separator");
panel.add(filePath);
panel.add(separator);
panel.add(table);
panel.setSize("100%", "100%");
panel.setCellHeight(filePath, "22");
panel.setCellHeight(separator, "4");
panel.setCellWidth(filePath, "100%");
panel.setCellWidth(separator, "100%");
panel.setCellVerticalAlignment(table,VerticalPanel.ALIGN_TOP);
panel.setVerticalAlignment(VerticalPanel.ALIGN_TOP);
initWidget(panel);
}
/**
* Resets the file browser values
*/
public void reset() {
selectedRowId = "";
table.reset();
}
/**
* Refresh languague values
*/
public void langRefresh() {
headerTable.setHTML(0,2,Main.i18n("filebrowser.name"));
headerTable.setHTML(0,3,Main.i18n("filebrowser.size"));
headerTable.setHTML(0,4,Main.i18n("filebrowser.date.update"));
headerTable.setHTML(0,5,Main.i18n("filebrowser.author"));
headerTable.setHTML(0,6,Main.i18n("filebrowser.version"));
filePath.langRefresh();
taxonomyMenuPopup.langRefresh();
thesaurusMenuPopup.langRefresh();
trashMenuPopup.langRefresh();
personalMenuPopup.langRefresh();
templatesMenuPopup.langRefresh();
mailMenuPopup.langRefresh();
}
/**
* Refresh the panel
*
* @param fldId The path id
*/
public void refresh(String fldId) {
Main.get().startUp.nextStatus(StartUp.STARTUP_LOADING_TAXONOMY_FILEBROWSER_FOLDERS);
Main.get().mainPanel.desktop.browser.tabMultiple.tabFolder.resetNumericFolderValues();
numberOfFolders = 0;
numberOfDocuments = 0;
numberOfMails = 0;
// Because its asyncronous the getFolderChilds when finishes calls the getDocumentChilds(flId)
// to be sure refresh forlder before document files
// and each time refresh file browser content needs to reset values
table.reset();
this.fldId = fldId;
getFolderChilds(fldId);
// On initialization fldId==null
if (fldId != null) {
filePath.setPath(fldId);
}
}
/**
* Removes all rows except the first
*/
private void removeAllRows() {
// Purge all rows
while (dataTable.getRowCount() > 0) {
dataTable.removeRow(0);
}
table.getDataTable().resize(0, NUMBER_OF_COLUMNS);
}
/**
* Adds a folder to the panel
*
* @param folder The folder to add
*/
private void addRow(GWTFolder folder) {
table.addRow(folder);
}
/**
* Adds a new folder
* Normally executed from directory tree
*
* @param folder The folder
*/
public void addFolder(GWTFolder folder){
table.addRow(folder);
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagFolderChilds();
}
/**
* Adds a document to the panel
*
* @param doc The doc to add
*/
private void addRow(GWTDocument doc) {
table.addRow(doc);
}
/**
* Adds a mail to the panel
*
* @param doc The doc to add
*/
private void addRow(GWTMail mail) {
table.addRow(mail);
}
/**
* Refresh the folder childs and call after the documentChilds refresh
*/
final AsyncCallback<List<GWTFolder>> callbackGetFolderChilds = new AsyncCallback<List<GWTFolder>>() {
public void onSuccess(List<GWTFolder> result) {
List<GWTFolder> folderList = result;
numberOfFolders = folderList.size();
Main.get().mainPanel.desktop.browser.tabMultiple.tabFolder.setNumberOfFolders(numberOfFolders);
removeAllRows();
for (Iterator<GWTFolder> it = folderList.iterator(); it.hasNext();) {
GWTFolder folder = it.next();
addRow(folder);
}
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagFolderChilds();
Main.get().startUp.nextStatus(StartUp.STARTUP_LOADING_TAXONOMY_FILEBROWSER_DOCUMENTS);
getDocumentChilds(fldId);
}
public void onFailure(Throwable caught) {
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagFolderChilds();
Main.get().showError("GetFolderChilds", caught);
}
};
/**
* Refresh the document childs
*/
final AsyncCallback<List<GWTDocument>> callbackGetDocumentChilds = new AsyncCallback<List<GWTDocument>>() {
public void onSuccess(List<GWTDocument> result){
List<GWTDocument> documentList = result;
numberOfDocuments = result.size();
Main.get().mainPanel.desktop.browser.tabMultiple.tabFolder.setNumberOfDocuments(numberOfDocuments);
for (Iterator<GWTDocument> it = documentList.iterator(); it.hasNext();){
GWTDocument doc = it.next();
addRow(doc);
}
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagDocumentChilds();
//below line changed by vissu on may14 for disable mail & disable categories & thesaurus
Main.get().startUp.nextStatus(StartUp.STARTUP_LOADING_TEMPLATES);
if (Main.get().mainPanel.desktop.navigator.getStackIndex()!= UIDesktopConstants.NAVIGATOR_THESAURUS &&
Main.get().mainPanel.desktop.navigator.getStackIndex()!= UIDesktopConstants.NAVIGATOR_CATEGORIES) {
//below line commented by vissu on may14 for disable mail
// getMailChilds(fldId);
} else {
selectSelectedRowInTable();
}
}
public void onFailure(Throwable caught) {
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagDocumentChilds();
Main.get().showError("GetDocumentChilds", caught);
}
};
/**
* Refresh the document childs
*/
final AsyncCallback<List<GWTMail>> callbackGetMailChilds = new AsyncCallback<List<GWTMail>>() {
public void onSuccess(List<GWTMail> result){
List<GWTMail> mailList = result;
numberOfMails = result.size();
Main.get().mainPanel.desktop.browser.tabMultiple.tabFolder.setNumberOfMails(numberOfMails);
for (Iterator<GWTMail> it = mailList.iterator(); it.hasNext();) {
addRow(it.next());
}
// Selects the selected row in table
selectSelectedRowInTable();
// Case document is created by template, must rename it after is showed
if (createdFromTemplate){
rename();
createdFromTemplate = false;
}
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagMailChilds();
//change STARTUP_LOADING_CATEGORIES to STARTUP_LOADING_TEMPLATES for disable categories & thesaurus
Main.get().startUp.nextStatus(StartUp.STARTUP_LOADING_TEMPLATES);
}
public void onFailure(Throwable caught) {
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagMailChilds();
Main.get().showError("GetMailChilds", caught);
}
};
/**
* selectSelectedRowInTable
*/
private void selectSelectedRowInTable() {
// If selectedRow > 0 must continue selecting the row ( after refreshing )
if (!selectedRowId.equals("")) {
int selectedRow = table.findSelectedRowById(selectedRowId);
if (selectedRow>=0) {
table.setSelectedRow(selectedRow);
// Ensures selected row is visible before resfreshing
// Must create a tmp widget to ensure row is visible and after we restore values
String tmpHTML = dataTable.getHTML(selectedRow,0);
HTML tmpWidget = new HTML("");
dataTable.setWidget(selectedRow,0,tmpWidget);
//fileBrowserPanel.ensureVisible(tmpWidget); // TODO: El ensure visible ha cambiado al ser un ScrollTable !!
dataTable.setHTML(selectedRow,0,tmpHTML);
}
setSelectedPanel(true);
GWTDocument doc = table.getDocument();
if (doc != null) {
// Every time refreshing document properties can be changed ( multi user activity for example )
Main.get().mainPanel.desktop.browser.tabMultiple.enableTabDocument();
Main.get().mainPanel.desktop.browser.tabMultiple.tabDocument.setProperties(doc);
Main.get().mainPanel.topPanel.toolBar.checkToolButtonPermissions(doc,Main.get().activeFolderTree.getFolder());
} else {
GWTMail mail = table.getMail();
if (mail!=null) {
// Every time refreshing document properties can be changed ( multi user activity for example )
Main.get().mainPanel.desktop.browser.tabMultiple.enableTabMail();
Main.get().mainPanel.desktop.browser.tabMultiple.tabMail.setProperties(mail);
Main.get().mainPanel.topPanel.toolBar.checkToolButtonPermissions(mail,Main.get().activeFolderTree.getFolder());
} else {
GWTFolder folder = table.getFolder();
if (folder != null) {
// Every time refreshing folder properties can be changed ( multi user activity for example )
Main.get().mainPanel.desktop.browser.tabMultiple.enableTabFolder();
Main.get().mainPanel.desktop.browser.tabMultiple.tabFolder.setProperties(folder);
Main.get().mainPanel.topPanel.toolBar.checkToolButtonPermissions(folder,
Main.get().activeFolderTree.getFolder(), FILE_BROWSER);
}
}
}
}
selectedRowId = ""; // Always initializes value
}
/**
* Deletes a document
*/
final AsyncCallback<Object> callbackDeleteDocument = new AsyncCallback<Object>() {
public void onSuccess(Object result) {
Log.debug("FileBroser callbackDeleteDocument:");
fireEvent(HasDocumentEvent.DOCUMENT_DELETED);
//int row = table.getSelectedRow();
table.delete();
//table.decrementHiddenIndexValues(row);
mantainSelectedRow();
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagDocumentDelete();
refresh(fldId);
}
public void onFailure(Throwable caught) {
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagDocumentDelete();
Main.get().showError("DeleteDocument", caught);
}
};
/**
* Deletes a mail
*/
final AsyncCallback<Object> callbackDeleteMail = new AsyncCallback<Object>() {
public void onSuccess(Object result) {
Log.debug("FileBroser callbackDeleteMail:");
fireEvent(HasMailEvent.MAIL_DELETED);
//int row = table.getSelectedRow();
table.delete();
//table.decrementHiddenIndexValues(row);
mantainSelectedRow();
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagMailDelete();
refresh(fldId);
}
public void onFailure(Throwable caught) {
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagMailDelete();
Main.get().showError("DeleteMail", caught);
}
};
/**
* Purge a document
*/
final AsyncCallback<Object> callbackPurgeDocument = new AsyncCallback<Object>() {
public void onSuccess(Object result) {
//int row = table.getSelectedRow();
table.delete();
//table.decrementHiddenIndexValues(row);
mantainSelectedRow();
Main.get().workspaceUserProperties.getUserDocumentsSize();
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagDocumentPurge();
refresh(fldId);
}
public void onFailure(Throwable caught) {
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagDocumentPurge();
Main.get().showError("PurgeDocument", caught);
}
};
/**
* Purge a mail
*/
final AsyncCallback<Object> callbackPurgeMail = new AsyncCallback<Object>() {
public void onSuccess(Object result) {
//int row = table.getSelectedRow();
table.delete();
//table.decrementHiddenIndexValues(row);
mantainSelectedRow();
Main.get().workspaceUserProperties.getUserDocumentsSize();
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagMailPurge();
refresh(fldId);
}
public void onFailure(Throwable caught) {
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagMailPurge();
Main.get().showError("PurgeMail", caught);
}
};
/**
* Deletes a folder
*/
final AsyncCallback<Object> callbackDeleteFolder = new AsyncCallback<Object>() {
public void onSuccess(Object result) {
fireEvent(HasFolderEvent.FOLDER_DELETED);
// Deletes folder from tree for consistence view
Main.get().activeFolderTree.removeDeleted(((GWTFolder)table.getFolder()).getPath());
//int row = table.getSelectedRow();
table.delete();
//table.decrementHiddenIndexValues(row);
mantainSelectedRow();
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagFolderDelete();
refresh(fldId);
}
public void onFailure(Throwable caught) {
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagFolderDelete();
Main.get().showError("DeleteFolder", caught);
}
};
/**
* Purges a folder
*/
final AsyncCallback<Object> callbackPurgeFolder = new AsyncCallback<Object>() {
public void onSuccess(Object result) {
// Deletes folder from tree for consistence view
Main.get().activeFolderTree.removeDeleted(((GWTFolder)table.getFolder()).getPath());
//int row = table.getSelectedRow();
table.delete();
//table.decrementHiddenIndexValues(row);
mantainSelectedRow();
Main.get().workspaceUserProperties.getUserDocumentsSize();
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagFolderPurge();
refresh(fldId);
}
public void onFailure(Throwable caught) {
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagFolderPurge();
Main.get().showError("PurgeFolder", caught);
}
};
/**
* Document checkout
*/
final AsyncCallback<Object> callbackCheckOut = new AsyncCallback<Object>() {
public void onSuccess(Object result) {
mantainSelectedRow();
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagCheckout();
Main.get().mainPanel.dashboard.userDashboard.setPendingCheckoutDocumentFlag(); // Marks flag to ensure all rpc calls has finished before downloading document
Main.get().mainPanel.dashboard.userDashboard.getUserCheckedOutDocuments();
table.downloadDocument(true);
refresh(fldId); // downloading document is made after finising refresh althought there's RPC call in getUserCheckedOutDocuments
// we suppose refresh it'll be more slower, and downloading must be done after last RPC call is finished
}
public void onFailure(Throwable caught) {
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagCheckout();
Main.get().showError("CheckOut", caught);
}
};
//added by vissu on feb20 for zohoapi
/**
* zoho
*/
final AsyncCallback<String> callbackZoho = new AsyncCallback<String>() {
public void onSuccess(String result) {
String url = result;
if(url.equals("Not supported"))
{
Window.alert("File Extension not supported");
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagCheckout();
}
else {
mantainSelectedRow();
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagCheckout();
Main.get().mainPanel.dashboard.userDashboard.setPendingCheckoutDocumentFlag(); // Marks flag to ensure all rpc calls has finished before downloading document
Main.get().mainPanel.dashboard.userDashboard.getUserCheckedOutDocuments();
refresh(fldId);
Main.get().zohoPopup.show("",url,800,500);
}
}
public void onFailure(Throwable caught) {
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagCheckout();
Main.get().showError("CancelCheckOut", caught);
}
};
/**
* Document cancel checkout
*/
final AsyncCallback<Object> callbackCancelCheckOut = new AsyncCallback<Object>() {
public void onSuccess(Object result) {
mantainSelectedRow();
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagCheckout();
refresh(fldId);
Main.get().mainPanel.dashboard.userDashboard.getUserCheckedOutDocuments();
}
public void onFailure(Throwable caught) {
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagCheckout();
Main.get().showError("CancelCheckOut", caught);
}
};
/**
* Document force cancel checkout
*/
final AsyncCallback<Object> callbackForceCancelCheckOut = new AsyncCallback<Object>() {
public void onSuccess(Object result) {
mantainSelectedRow();
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagCheckout();
refresh(fldId);
Main.get().mainPanel.dashboard.userDashboard.getUserCheckedOutDocuments();
}
public void onFailure(Throwable caught) {
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagCheckout();
Main.get().showError("Force CancelCheckOut", caught);
}
};
/**
* Document lock
*/
final AsyncCallback<Object> callbackLock = new AsyncCallback<Object>() {
public void onSuccess(Object result) {
mantainSelectedRow();
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagLock();
refresh(fldId);
Main.get().mainPanel.dashboard.userDashboard.getUserLockedDocuments();
}
public void onFailure(Throwable caught) {
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagLock();
Main.get().showError("Lock", caught);
}
};
/**
* Document cancel lock
*/
final AsyncCallback<Object> callbackUnLock = new AsyncCallback<Object>() {
public void onSuccess(Object result) {
mantainSelectedRow();
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagUnLock();
refresh(fldId);
Main.get().mainPanel.dashboard.userDashboard.getUserLockedDocuments();
}
public void onFailure(Throwable caught) {
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagUnLock();
Main.get().showError("UnLock", caught);
}
};
/**
* Document force cancel lock
*/
final AsyncCallback<Object> callbackForceUnLock = new AsyncCallback<Object>() {
public void onSuccess(Object result) {
mantainSelectedRow();
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagUnLock();
refresh(fldId);
Main.get().mainPanel.dashboard.userDashboard.getUserLockedDocuments();
}
public void onFailure(Throwable caught) {
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagUnLock();
Main.get().showError("Force UnLock", caught);
}
};
/**
* Document rename
*/
final AsyncCallback<GWTDocument> callbackDocumentRename = new AsyncCallback<GWTDocument>() {
public void onSuccess(GWTDocument result) {
GWTDocument doc = result;
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagDocumentRename();
dataTable.setHTML(table.getSelectedRow(), 2, doc.getName());
if (table.getDocument() != null) {
table.setDocument(doc);
}
mantainSelectedRow();
hideRename();
refresh(fldId);
}
public void onFailure(Throwable caught) {
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagDocumentRename();
Main.get().showError("DocumentRename", caught);
}
};
/**
* Folder rename
*/
final AsyncCallback<GWTFolder> callbackFolderRename = new AsyncCallback<GWTFolder>() {
public void onSuccess(GWTFolder result) {
GWTFolder folder = result;
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagFolderRename();
dataTable.setHTML(table.getSelectedRow(), 2, folder.getName());
table.setFolder(folder);
mantainSelectedRow();
hideRename();
Main.get().activeFolderTree.renameRenamed(tmpFolder.getPath(), folder);
refresh(fldId);
}
public void onFailure(Throwable caught) {
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagFolderRename();
Main.get().showError("FolderRename", caught);
}
};
/**
* Document rename
*/
final AsyncCallback<GWTMail> callbackMailRename = new AsyncCallback<GWTMail>() {
public void onSuccess(GWTMail result) {
GWTMail mail = result;
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagMailRename();
dataTable.setHTML(table.getSelectedRow(), 2, mail.getSubject());
if (table.getMail() != null) {
table.setMail(mail);
}
mantainSelectedRow();
hideRename();
refresh(fldId);
}
public void onFailure(Throwable caught) {
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagMailRename();
Main.get().showError("MailRename", caught);
}
};
/**
* Gets actual folder row selectd
*/
final AsyncCallback<GWTFolder> callbackGetFolder = new AsyncCallback<GWTFolder>() {
public void onSuccess(GWTFolder result) {
if (fileBrowserAction == ACTION_SECURITY_REFRESH_FOLDER) {
GWTFolder gWTFolder = result;
table.setFolder(gWTFolder);
Main.get().mainPanel.desktop.browser.tabMultiple.tabFolder.setProperties(gWTFolder);
Main.get().activeFolderTree.refreshChildValues(gWTFolder);
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagGetFolder();
fileBrowserAction = ACTION_NONE;
}
}
public void onFailure(Throwable caught) {
fileBrowserAction = ACTION_NONE; // Ensures on error folder action be restores
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagGetFolder();
Main.get().showError("Get", caught);
}
};
/**
* Gets actual document row selected
*/
final AsyncCallback<GWTDocument> callbackGetDocument = new AsyncCallback<GWTDocument>() {
public void onSuccess(GWTDocument result) {
if (fileBrowserAction == ACTION_SECURITY_REFRESH_DOCUMENT) {
GWTDocument gWTDocument = result;
table.setDocument(gWTDocument);
Main.get().mainPanel.desktop.browser.tabMultiple.tabDocument.setProperties(gWTDocument);
Main.get().mainPanel.topPanel.toolBar.checkToolButtonPermissions(gWTDocument,
Main.get().activeFolderTree.getFolder());
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagGetDocument();
fileBrowserAction = ACTION_NONE;
}
}
public void onFailure(Throwable caught) {
fileBrowserAction = ACTION_NONE; // Ensures on error folder action be restores
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagGetDocument();
Main.get().showError("Get", caught);
}
};
/**
* Gets actual mail row selected
*/
final AsyncCallback<GWTMail> callbackGetMailProperties = new AsyncCallback<GWTMail>() {
public void onSuccess(GWTMail result) {
if (fileBrowserAction == ACTION_SECURITY_REFRESH_MAIL) {
GWTMail gWTMail = result;
table.setMail(gWTMail);
Main.get().mainPanel.desktop.browser.tabMultiple.tabMail.setProperties(gWTMail);
//below line commented by vissu on may14 for disable mail
/* Main.get().mainPanel.topPanel.toolBar.checkToolButtonPermissions(gWTMail,
Main.get().activeFolderTree.getFolder());*/
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagMailProperties();
fileBrowserAction = ACTION_NONE;
}
}
public void onFailure(Throwable caught) {
fileBrowserAction = ACTION_NONE; // Ensures on error folder action be restores
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagMailProperties();
Main.get().showError("Get", caught);
}
};
/**
* Adds a subscription
*/
final AsyncCallback<Object> callbackAddSubscription = new AsyncCallback<Object>() {
public void onSuccess(Object result) {
if (table.isDocumentSelected() && table.getDocument() != null) {
table.getDocument().setSubscribed(true);
Main.get().mainPanel.dashboard.userDashboard.getUserSubscribedDocuments();
} else if (table.isFolderSelected() && table.getFolder() != null) {
table.getFolder().setSubscribed(true);
Main.get().activeFolderTree.refreshChildValues((GWTFolder) table.getFolder());
Main.get().mainPanel.dashboard.userDashboard.getUserSubscribedFolders();
}
mantainSelectedRow();
refresh(fldId);
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagAddSubscription();
}
public void onFailure(Throwable caught) {
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagAddSubscription();
Main.get().showError("AddSubcription", caught);
}
};
/**
* Removes a subscription
*/
final AsyncCallback<Object> callbackRemoveSubscription = new AsyncCallback<Object>() {
public void onSuccess(Object result) {
if (table.isDocumentSelected() && table.getDocument() != null) {
table.getDocument().setSubscribed(false);
Main.get().mainPanel.dashboard.userDashboard.getUserSubscribedDocuments();
} else if (table.isFolderSelected() && table.getFolder() != null) {
table.getFolder().setSubscribed(false);
Main.get().activeFolderTree.refreshChildValues((GWTFolder) table.getFolder());
Main.get().mainPanel.dashboard.userDashboard.getUserSubscribedFolders();
}
mantainSelectedRow();
refresh(fldId);
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagRemoveSubscription();
}
public void onFailure(Throwable caught) {
Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagRemoveSubscription();
Main.get().showError("RemoveSubcription", caught);
}
};
/**
* Gets the folder childs list from the server
*
* @param fldId The path id
*/
public void getFolderChilds(String fldId) {
// In thesaurus and categories view must not be showed folders only documents
if (Main.get().mainPanel.desktop.navigator.getStackIndex()!= UIDesktopConstants.NAVIGATOR_THESAURUS &&
Main.get().mainPanel.desktop.navigator.getStackIndex()!= UIDesktopConstants.NAVIGATOR_CATEGORIES) {
ServiceDefTarget endPoint = (ServiceDefTarget) folderService;
endPoint.setServiceEntryPoint(RPCService.FolderService);
Main.get().mainPanel.desktop.browser.fileBrowser.status.setFlagFolderChilds();
folderService.getChilds(fldId, callbackGetFolderChilds);
} else {
removeAllRows();
getDocumentChilds(fldId);
}
}
/**
* Gets the document childs list from the server
*
* @param fldId The path id
*/
public void getDocumentChilds(String fldId) {
ServiceDefTarget endPoint = (ServiceDefTarget) documentService;
endPoint.setServiceEntryPoint(RPCService.DocumentService);
Main.get().mainPanel.desktop.browser.fileBrowser.status.setFlagDocumentChilds();
documentService.getChilds(fldId, callbackGetDocumentChilds);
}
/**
* Gets the mail childs list from the server
*
* @param fldId The path id
*/
public void getMailChilds(String fldId) {
ServiceDefTarget endPoint = (ServiceDefTarget) mailService;
endPoint.setServiceEntryPoint(RPCService.MailService);
Main.get().mainPanel.desktop.browser.fileBrowser.status.setFlagMailChilds();
mailService.getChilds(fldId, callbackGetMailChilds);
}
/**
* Gets the actual folder (actualItem) and refresh all information on it
*/
private void refreshFolderValues() {
ServiceDefTarget endPoint = (ServiceDefTarget) folderService;
endPoint.setServiceEntryPoint(RPCService.FolderService);
Main.get().mainPanel.desktop.browser.fileBrowser.status.setFlagGetFolder();
folderService.getProperties(((GWTFolder)table.getFolder()).getPath() ,callbackGetFolder);
}
/**
* Gets the actual folder (actualItem) and refresh all information on it
*/
private void refreshDocumentValues() {
ServiceDefTarget endPoint = (ServiceDefTarget) documentService;
endPoint.setServiceEntryPoint(RPCService.DocumentService);
Main.get().mainPanel.desktop.browser.fileBrowser.status.setFlagGetDocument();
documentService.get( ((GWTDocument) table.getDocument()).getPath() ,callbackGetDocument);
}
/**
* Gets the actual folder (actualItem) and refresh all information on it
*/
private void refreshMailValues() {
ServiceDefTarget endPoint = (ServiceDefTarget) mailService;
endPoint.setServiceEntryPoint(RPCService.MailService);
Main.get().mainPanel.desktop.browser.fileBrowser.status.setFlagMailProperties();
mailService.getProperties(((GWTMail) table.getMail()).getPath() ,callbackGetMailProperties);
}
/**
* Show the browser menu
*/
public void showMenu() {
MenuPopup menuPopup = null;
// The browser menu depends on actual view
switch(actualView){
case UIDesktopConstants.NAVIGATOR_TAXONOMY:
menuPopup = taxonomyMenuPopup;
break;
//commented by vissu may18 for disable categories & thesaurus
/* case UIDesktopConstants.NAVIGATOR_CATEGORIES:
menuPopup = categoriesMenuPopup;
break;
case UIDesktopConstants.NAVIGATOR_THESAURUS:
menuPopup = thesaurusMenuPopup;
break;*/
case UIDesktopConstants.NAVIGATOR_TRASH:
// Must substract top position from Y Screen Position
trashMenuPopup.setPopupPosition(table.getMouseX(), table.getMouseY());
trashMenuPopup.show();
break;
case UIDesktopConstants.NAVIGATOR_TEMPLATES:
menuPopup = templatesMenuPopup;
break;
case UIDesktopConstants.NAVIGATOR_PERSONAL:
menuPopup = personalMenuPopup;
break;
//commented by vissu on may14 for disable mail
/*case UIDesktopConstants.NAVIGATOR_MAIL:
menuPopup = mailMenuPopup;
break;*/
}
// For all menus except trash
if (menuPopup!=null) {
menuPopup.setPopupPosition(table.getMouseX(), table.getMouseY());
if (table.isDocumentSelected()) {
menuPopup.checkMenuOptionPermissions(table.getDocument(), Main.get().activeFolderTree.getFolder());
} else if (table.isFolderSelected()) {
menuPopup.checkMenuOptionPermissions(table.getFolder(), Main.get().activeFolderTree.getFolder());
} else if (table.isMailSelected()) {
menuPopup.checkMenuOptionPermissions(table.getMail(), Main.get().activeFolderTree.getFolder());
} else {
menuPopup.disableAllMenuOption();
}
menuPopup.evaluateMenuOptions();
menuPopup.show();
}
}
/**
* Show a previos message to confirm delete
*/
public void confirmDelete() {
if (table.isDocumentSelected() && table.getDocument() != null) {
Main.get().confirmPopup.setConfirm(ConfirmPopup.CONFIRM_DELETE_DOCUMENT);
Main.get().confirmPopup.show();
} else if (table.isFolderSelected() && table.getFolder() != null) {
Main.get().confirmPopup.setConfirm(ConfirmPopup.CONFIRM_DELETE_FOLDER);
Main.get().confirmPopup.show();
} if (table.isMailSelected() && table.getMail() != null) {
Main.get().confirmPopup.setConfirm(ConfirmPopup.CONFIRM_DELETE_MAIL);
Main.get().confirmPopup.show();
}
}
/**
* Deletes file or document on file browser
*/
public void delete() {
if (table.isDocumentSelected() && table.getDocument() != null) {
Log.debug("FileBroser delete:" + table.getDocument().getPath());
ServiceDefTarget endPoint = (ServiceDefTarget) documentService;
endPoint.setServiceEntryPoint(RPCService.DocumentService);
Main.get().mainPanel.desktop.browser.fileBrowser.status.setFlagDocumentDelete();
documentService.delete(table.getDocument().getPath(), callbackDeleteDocument);
} else if (table.isFolderSelected() && table.getFolder() != null) {
Log.debug("FileBroser delete:" + table.getFolder().getPath());
ServiceDefTarget endPoint = (ServiceDefTarget) folderService;
endPoint.setServiceEntryPoint(RPCService.FolderService);
Main.get().mainPanel.desktop.browser.fileBrowser.status.setFlagFolderDelete();
folderService.delete(table.getFolder().getPath(), callbackDeleteFolder);
} if (table.isMailSelected() && table.getMail() != null) {
Log.debug("FileBroser delete:" + table.getMail().getPath());
ServiceDefTarget endPoint = (ServiceDefTarget) mailService;
endPoint.setServiceEntryPoint(RPCService.MailService);
Main.get().mainPanel.desktop.browser.fileBrowser.status.setFlagMailDelete();
mailService.delete(table.getMail().getPath(), callbackDeleteMail);
}
}
/**
* Adds a subscription to document or folder
*/
public void addSubscription() {
if (table.isDocumentSelected() && table.getDocument() != null) {
ServiceDefTarget endPoint = (ServiceDefTarget) notifyService;
endPoint.setServiceEntryPoint(RPCService.NotifyService);
Main.get().mainPanel.desktop.browser.fileBrowser.status.setFlagAddSubscription();
notifyService.subscribe(table.getDocument().getPath(),callbackAddSubscription);
} else if (table.isFolderSelected() && table.getFolder() != null) {
ServiceDefTarget endPoint = (ServiceDefTarget) notifyService;
endPoint.setServiceEntryPoint(RPCService.NotifyService);
Main.get().mainPanel.desktop.browser.fileBrowser.status.setFlagAddSubscription();
notifyService.subscribe(table.getFolder().getPath(),callbackAddSubscription);
}
}
/**
* Adds a subscription to document or folder
*/
public void removeSubscription() {
if (table.isDocumentSelected() && table.getDocument() != null) {
ServiceDefTarget endPoint = (ServiceDefTarget) notifyService;
endPoint.setServiceEntryPoint(RPCService.NotifyService);
Main.get().mainPanel.desktop.browser.fileBrowser.status.setFlagRemoveSubscription();
notifyService.unsubscribe(table.getDocument().getPath(),callbackRemoveSubscription);
} else if (table.isFolderSelected() && table.getFolder() != null) {
ServiceDefTarget endPoint = (ServiceDefTarget) notifyService;
endPoint.setServiceEntryPoint(RPCService.NotifyService);
Main.get().mainPanel.desktop.browser.fileBrowser.status.setFlagRemoveSubscription();
notifyService.unsubscribe(table.getFolder().getPath(),callbackRemoveSubscription);
}
}
/**
* Deletes folder or document on file browser before is moved
*/
public void deleteMovedOrMoved() {
if (table.isDocumentSelected()) {
if (table.getDocument() != null) {
table.delete();
mantainSelectedRow();
refresh(fldId);
}
} else if (table.isFolderSelected()) {
Main.get().activeFolderTree.removeDeleted(((GWTFolder)table.getFolder()).getPath());
table.delete();
mantainSelectedRow();
refresh(fldId);
} else if (table.isMailSelected()) {
table.delete();
mantainSelectedRow();
refresh(fldId);
}
}
/**
* Move file or folder on file browser
*/
public void move() {
if (table.isDocumentSelected() && table.getDocument() != null) {
Main.get().activeFolderTree.folderSelectPopup.setEntryPoint(FolderSelectPopup.ENTRYPOINT_BROWSER);
Main.get().activeFolderTree.folderSelectPopup.setToMove(table.getDocument());
Main.get().activeFolderTree.showDirectorySelectPopup();
} else if (table.isFolderSelected() && table.getFolder() != null) {
Main.get().activeFolderTree.folderSelectPopup.setEntryPoint(FolderSelectPopup.ENTRYPOINT_BROWSER);
Main.get().activeFolderTree.folderSelectPopup.setToMove(table.getFolder());
Main.get().activeFolderTree.showDirectorySelectPopup();
} else if (table.isMailSelected() && table.getMail() != null) {
Main.get().activeFolderTree.folderSelectPopup.setEntryPoint(FolderSelectPopup.ENTRYPOINT_BROWSER);
Main.get().activeFolderTree.folderSelectPopup.setToMove(table.getMail());
Main.get().activeFolderTree.showDirectorySelectPopup();
}
}
/**
* Copy file or folder on file browser
*/
public void copy() {
if (table.isDocumentSelected() && table.getDocument() != null) {
Main.get().activeFolderTree.folderSelectPopup.setEntryPoint(FolderSelectPopup.ENTRYPOINT_BROWSER);
Main.get().activeFolderTree.folderSelectPopup.setToCopy(table.getDocument());
Main.get().activeFolderTree.showDirectorySelectPopup();
} else if (table.isFolderSelected() && table.getFolder() != null) {
Main.get().activeFolderTree.folderSelectPopup.setEntryPoint(FolderSelectPopup.ENTRYPOINT_BROWSER);
Main.get().activeFolderTree.folderSelectPopup.setToCopy(table.getFolder());
Main.get().activeFolderTree.showDirectorySelectPopup();
} else if (table.isMailSelected() && table.getMail() != null) {
Main.get().activeFolderTree.folderSelectPopup.setEntryPoint(FolderSelectPopup.ENTRYPOINT_BROWSER);
Main.get().activeFolderTree.folderSelectPopup.setToCopy(table.getMail());
Main.get().activeFolderTree.showDirectorySelectPopup();
}
}
/**
* Copy file or folder on file browser
*/
public void createFromTemplate() {
if (table.isDocumentSelected() && table.getDocument() != null) {
Main.get().activeFolderTree.folderSelectPopup.setEntryPoint(FolderSelectPopup.ENTRYPOINT_BROWSER);
Main.get().activeFolderTree.folderSelectPopup.setToCreateFromTemplate(table.getDocument());
Main.get().activeFolderTree.showDirectorySelectPopup();
}
}
/**
* Restore file or document on file browser ( only trash mode )
*/
public void restore() {
if (table.isDocumentSelected() && table.getDocument() != null) {
Main.get().activeFolderTree.folderSelectPopup.setEntryPoint(FolderSelectPopup.ENTRYPOINT_BROWSER);
Main.get().activeFolderTree.folderSelectPopup.setToRestore(table.getDocument());
Main.get().activeFolderTree.showDirectorySelectPopup();
} else if (table.isFolderSelected() && table.getFolder() != null) {
Main.get().activeFolderTree.folderSelectPopup.setEntryPoint(FolderSelectPopup.ENTRYPOINT_BROWSER);
Main.get().activeFolderTree.folderSelectPopup.setToRestore(table.getFolder());
Main.get().activeFolderTree.showDirectorySelectPopup();
} else if (table.isMailSelected() && table.getMail() != null) {
Main.get().activeFolderTree.folderSelectPopup.setEntryPoint(FolderSelectPopup.ENTRYPOINT_BROWSER);
Main.get().activeFolderTree.folderSelectPopup.setToRestore(table.getMail());
Main.get().activeFolderTree.showDirectorySelectPopup();
}
}
/**
* Confirm purge action
*/
public void confirmPurge() {
if (table.isDocumentSelected() && table.getDocument() != null) {
Main.get().confirmPopup.setConfirm(ConfirmPopup.CONFIRM_PURGE_DOCUMENT);
Main.get().confirmPopup.show();
} else if (table.isFolderSelected() && table.getFolder() != null) {
Main.get().confirmPopup.setConfirm(ConfirmPopup.CONFIRM_PURGE_FOLDER);
Main.get().confirmPopup.show();
} else if (table.isMailSelected() && table.getMail() != null) {
Main.get().confirmPopup.setConfirm(ConfirmPopup.CONFIRM_PURGE_DOCUMENT);
Main.get().confirmPopup.show();
}
}
/**
* Purge file or document on file browser ( only trash mode )
*/
public void purge() {
if (table.isDocumentSelected() && table.getDocument() != null) {
ServiceDefTarget endPoint = (ServiceDefTarget) documentService;
endPoint.setServiceEntryPoint(RPCService.DocumentService);
Main.get().mainPanel.desktop.browser.fileBrowser.status.setFlagDocumentPurge();
documentService.purge(table.getDocument().getPath(), callbackPurgeDocument);
} else if (table.isFolderSelected() && table.getFolder() != null) {
ServiceDefTarget endPoint = (ServiceDefTarget) folderService;
endPoint.setServiceEntryPoint(RPCService.FolderService);
Main.get().mainPanel.desktop.browser.fileBrowser.status.setFlagFolderPurge();
folderService.purge(table.getFolder().getPath(), callbackPurgeFolder);
} else if (table.isMailSelected() && table.getMail() != null) {
ServiceDefTarget endPoint = (ServiceDefTarget) mailService;
endPoint.setServiceEntryPoint(RPCService.MailService);
Main.get().mainPanel.desktop.browser.fileBrowser.status.setFlagMailPurge();
mailService.purge(table.getMail().getPath(), callbackPurgeMail);
}
}
/**
* Document checkout
*/
public void checkout() {
if (table.isDocumentSelected() && table.getDocument() != null) {
ServiceDefTarget endPoint = (ServiceDefTarget) documentService;
endPoint.setServiceEntryPoint(RPCService.DocumentService);
Main.get().mainPanel.desktop.browser.fileBrowser.status.setFlagCheckout();
documentService.checkout(table.getDocument().getPath(), callbackCheckOut);
}
}
//added by vissu on feb19 for zohoapi
/**
* Show a previos message to confirm close zoho
*/
public void confirmCloseZoho() {
Main.get().confirmPopup.setConfirm(ConfirmPopup.CONFIRM_CLOSE_ZOHO);
Main.get().confirmPopup.show();
}
/**
* zoho
*/
public void zoho() {
if (table.isDocumentSelected() && table.getDocument() != null) {
System.out.println("FileBrowser.java--zoho");
ServiceDefTarget endPoint = (ServiceDefTarget) documentService;
endPoint.setServiceEntryPoint(RPCService.DocumentService);
Main.get().mainPanel.desktop.browser.fileBrowser.status.setFlagCheckout();
documentService.zoho(table.getDocument().getPath(), callbackZoho);
//Main.get().zohoPopup.show("",,800,400);
}
}
/**
* Document cancel checkout
*/
public void cancelCheckout(){
if (table.isDocumentSelected() && table.getDocument() != null) {
ServiceDefTarget endPoint = (ServiceDefTarget) documentService;
endPoint.setServiceEntryPoint(RPCService.DocumentService);
Main.get().mainPanel.desktop.browser.fileBrowser.status.setFlagCheckout();
documentService.cancelCheckout(table.getDocument().getPath(), callbackCancelCheckOut);
}
}
/**
* Document cancel checkout
*/
public void forceCancelCheckout(){
if (table.isDocumentSelected() && table.getDocument() != null) {
ServiceDefTarget endPoint = (ServiceDefTarget) documentService;
endPoint.setServiceEntryPoint(RPCService.DocumentService);
Main.get().mainPanel.desktop.browser.fileBrowser.status.setFlagCheckout();
documentService.forceCancelCheckout(table.getDocument().getPath(), callbackForceCancelCheckOut);
}
}
/**
* Document lock
*/
public void lock(){
if (table.isDocumentSelected() && table.getDocument() != null) {
ServiceDefTarget endPoint = (ServiceDefTarget) documentService;
endPoint.setServiceEntryPoint(RPCService.DocumentService);
Main.get().mainPanel.desktop.browser.fileBrowser.status.setFlagLock();
documentService.lock(table.getDocument().getPath(), callbackLock);
}
}
/**
* Document unlock
*/
public void unlock() {
if (table.isDocumentSelected() && table.getDocument() != null) {
ServiceDefTarget endPoint = (ServiceDefTarget) documentService;
endPoint.setServiceEntryPoint(RPCService.DocumentService);
Main.get().mainPanel.desktop.browser.fileBrowser.status.setFlagUnLock();
documentService.unlock(table.getDocument().getPath(), callbackUnLock);
}
}
/**
* Document force unlock
*/
public void forceUnlock() {
if (table.isDocumentSelected() && table.getDocument() != null) {
ServiceDefTarget endPoint = (ServiceDefTarget) documentService;
endPoint.setServiceEntryPoint(RPCService.DocumentService);
Main.get().mainPanel.desktop.browser.fileBrowser.status.setFlagUnLock();
documentService.forceUnlock(table.getDocument().getPath(), callbackForceUnLock);
}
}
/**
* Document and folder rename
*/
public void rename(String newName) {
fileBrowserAction = ACTION_NONE;
if (table.isDocumentSelected() && table.getDocument() != null) {
ServiceDefTarget endPoint = (ServiceDefTarget) documentService;
endPoint.setServiceEntryPoint(RPCService.DocumentService);
Main.get().mainPanel.desktop.browser.fileBrowser.status.setFlagDocumentRename();
documentService.rename(table.getDocument().getPath(),newName, callbackDocumentRename);
} else if (table.isFolderSelected() && table.getFolder() != null) {
ServiceDefTarget endPoint = (ServiceDefTarget) folderService;
endPoint.setServiceEntryPoint(RPCService.FolderService);
Main.get().mainPanel.desktop.browser.fileBrowser.status.setFlagFolderRename();
folderService.rename(table.getFolder().getPath(),newName, callbackFolderRename);
} else if (table.isMailSelected() && table.getMail() != null) {
ServiceDefTarget endPoint = (ServiceDefTarget) mailService;
endPoint.setServiceEntryPoint(RPCService.MailService);
Main.get().mainPanel.desktop.browser.fileBrowser.status.setFlagMailRename();
mailService.rename(table.getMail().getPath(),newName, callbackMailRename);
}
}
/**
* Gets the document path
*
* @return The path
*/
public String getPath() {
if (table.getDocument() != null) {
return table.getDocument().getPath();
} else {
return null;
}
}
/**
* Mantain the selected row after refresh
*
*/
public void mantainSelectedRow() {
selectedRowId = table.getSelectedId();
}
/**
* Mantain the selected row by Path
* @param path
*/
public void mantainSelectedRowByPath(String path) {
selectedRowId = path;
}
/**
* Deselects the selected row
*/
public void deselecSelectedRow() {
table.deselecSelectedRow();
selectedRowId = "";
}
/**
* Return true or false if it's a selected row
*
* @return True or false selected row
*/
public boolean isSelectedRow(){
return table.isSelectedRow();
}
/**
* Sets the selected row Id value
*
* @param selectedRowId The selected row Id value ( doc or folder ) path
*/
public void setSelectedRowId(String selectedRowId) {
this.selectedRowId = selectedRowId;
}
/**
* Show the rename text Box
*/
public void rename() {
if (table.isDocumentSelected() || table.isFolderSelected() || table.isMailSelected()) {
Main.get().mainPanel.disableKeyShorcuts(); // Disables key shortcuts while renaming
fileBrowserAction = ACTION_RENAME;
fileTextBox.reset();
fileTextBox.setAction(FileTextBox.ACTION_RENAME);
initialRowValueName = dataTable.getText(table.getSelectedRow(), 2);
fileTextBox.setText(initialRowValueName);
dataTable.setWidget(table.getSelectedRow(), 2, fileTextBox);
dataTable.getCellFormatter().removeStyleName(table.getSelectedRow(), 2, "okm-DisableSelect");
fileTextBox.setFocus();
table.setAction(ExtendedScrollTable.ACTION_RENAMING);
if (table.isFolderSelected() && table.getFolder() != null) {
tmpFolder = table.getFolder();
}
}
}
/**
* Sets the flag created from template
*/
public void setFlagCreatedFromTemplate(){
createdFromTemplate = true;
}
/**
* Hide the rename text Box
*/
public void hideRename() {
hideRename(table.getSelectedRow());
}
/**
* Hides the rename text box ( selected row )
*
* @param selectedRow The selected row
*/
public void hideRename(int selectedRow) {
fileBrowserAction = ACTION_NONE;
dataTable.setHTML(selectedRow, 2, initialRowValueName);
initialRowValueName = "";
table.resetAction();
Main.get().mainPanel.enableKeyShorcuts(); // Enables general keys applications
}
/**
* Save changes to the actual view
*
*/
public void changeView(int view){
// Saves actual view values on hashMap
switch (actualView) {
case UIDesktopConstants.NAVIGATOR_TAXONOMY:
if (table.getSelectedRow()>0){
viewValues.put("view_root:selectedRowId", table.getSelectedId());
table.resetSelectedRows();
} else {
if (viewValues.containsKey("view_root:selectedRowId")){
viewValues.remove("view_root:selectedRowId");
}
}
break;
case UIDesktopConstants.NAVIGATOR_TRASH:
if (table.getSelectedRow()>0){
viewValues.put("view_trash:selectedRowId", table.getSelectedId());
table.resetSelectedRows();
} else {
if (viewValues.containsKey("view_trash:selectedRowId")){
viewValues.remove("view_trash:selectedRowId");
}
}
break;
case UIDesktopConstants.NAVIGATOR_TEMPLATES:
if (table.getSelectedRow()>0){
viewValues.put("view_templates:selectedRowId", table.getSelectedId());
table.resetSelectedRows();
} else {
if (viewValues.containsKey("view_templates:selectedRowId")){
viewValues.remove("view_templates:selectedRowId");
}
}
break;
case UIDesktopConstants.NAVIGATOR_PERSONAL:
if (table.getSelectedRow()>0){
viewValues.put("view_my_documents:selectedRowId", table.getSelectedId());
table.resetSelectedRows();
} else {
if (viewValues.containsKey("view_my_documents:selectedRowId")){
viewValues.remove("view_my_documents:selectedRowId");
}
}
break;
case UIDesktopConstants.NAVIGATOR_MAIL:
if (table.getSelectedRow()>0){
viewValues.put("view_mail:selectedRowId", table.getSelectedId());
table.resetSelectedRows();
} else {
if (viewValues.containsKey("view_mail:selectedRowId")){
viewValues.remove("view_mail:selectedRowId");
}
}
break;
}
// Reset values
reset();
// Restores view values from hashMap
switch (view) {
case UIDesktopConstants.NAVIGATOR_TAXONOMY:
if (viewValues.containsKey("view_root:selectedRowId")){
Main.get().mainPanel.desktop.browser.fileBrowser.setSelectedRowId((String) viewValues.get("view_root:selectedRowId"));
}
break;
case UIDesktopConstants.NAVIGATOR_TRASH:
if (viewValues.containsKey("view_trash:selectedRowId")){
Main.get().mainPanel.desktop.browser.fileBrowser.setSelectedRowId((String) viewValues.get("view_trash:selectedRowId"));
}
break;
case UIDesktopConstants.NAVIGATOR_TEMPLATES:
if (viewValues.containsKey("view_templates:selectedRowId")){
Main.get().mainPanel.desktop.browser.fileBrowser.setSelectedRowId((String) viewValues.get("view_templates:selectedRowId"));
}
break;
case UIDesktopConstants.NAVIGATOR_PERSONAL:
if (viewValues.containsKey("view_my_documents:selectedRowId")){
Main.get().mainPanel.desktop.browser.fileBrowser.setSelectedRowId((String) viewValues.get("view_my_documents:selectedRowId"));
}
break;
case UIDesktopConstants.NAVIGATOR_MAIL:
if (viewValues.containsKey("view_mail:selectedRowId")){
Main.get().mainPanel.desktop.browser.fileBrowser.setSelectedRowId((String) viewValues.get("view_mail:selectedRowId"));
}
break;
}
actualView = view;
}
/**
* Indicates if panel is selected
*
* @return The value of panel ( selected )
*/
public boolean isPanelSelected(){
return panelSelected;
}
/**
* Sets the selected panel value
*
* @param selected The selected panel value
*/
public void setSelectedPanel(boolean selected){
// Before other operations must change panel selected value
panelSelected = selected;
if (selected){
switch (actualView) {
case UIDesktopConstants.NAVIGATOR_TAXONOMY:
case UIDesktopConstants.NAVIGATOR_CATEGORIES:
case UIDesktopConstants.NAVIGATOR_THESAURUS:
case UIDesktopConstants.NAVIGATOR_TEMPLATES:
case UIDesktopConstants.NAVIGATOR_PERSONAL:
case UIDesktopConstants.NAVIGATOR_MAIL:
Main.get().activeFolderTree.setSelectedPanel(false);
break;
case UIDesktopConstants.NAVIGATOR_TRASH:
Main.get().activeFolderTree.setSelectedPanel(false);
break;
}
panel.setStyleName("okm-PanelSelected");
} else {
panel.removeStyleName("okm-PanelSelected");
}
}
/**
* Refresh for security changes on actual selected row icon color ) and folder / document
* properties, it only refresh the actual
*/
public void securityRefresh(){
if (isFolderSelected()) {
fileBrowserAction = ACTION_SECURITY_REFRESH_FOLDER;
refreshFolderValues();
} else if(isDocumentSelected()) {
fileBrowserAction = ACTION_SECURITY_REFRESH_DOCUMENT;
refreshDocumentValues();
}//commented by vissu on may14 for disable mail
/*else if (isMailSelected()) {
fileBrowserAction = ACTION_SECURITY_REFRESH_MAIL;
refreshMailValues();
}*/
}
/**
* Sets the home
*/
public void setHome(){
if (isDocumentSelected()) {
Main.get().mainPanel.topPanel.mainMenu.bookmark.confirmSetHome(getDocument().getUuid(), getDocument().getPath(), true);
} else if (isFolderSelected()) {
Main.get().mainPanel.topPanel.mainMenu.bookmark.confirmSetHome(getFolder().getUuid(), getFolder().getPath(), false);
}
}
/**
* isFolderSelected
*
* @return
*/
public boolean isFolderSelected(){
return table.isFolderSelected();
}
/**
* isDocumentSelected
*
* @return
*/
public boolean isDocumentSelected(){
return table.isDocumentSelected();
}
/**
* isMailSelected
*
* @return
*/
public boolean isMailSelected(){
return table.isMailSelected();
}
/**
* getFolder
*
* @return
*/
public GWTFolder getFolder(){
return table.getFolder();
}
/**
* getDocument
*
* @return
*/
public GWTDocument getDocument() {
return table.getDocument();
}
/**
* getMail
*
* @return
*/
public GWTMail getMail() {
return table.getMail();
}
/**
* Export a folder
*/
public void exportFolderToFile() {
if (table.isFolderSelected()) {
Util.downloadFile(getFolder().getPath(), "export");
}
}
/**
* addNoteIconToSelectedRow
*/
public void addNoteIconToSelectedRow() {
table.addNoteIconToSelectedRow();
}
/**
* deleteNoteIconToSelectedRow
*/
public void deleteNoteIconToSelectedRow() {
table.deleteNoteIconToSelectedRow();
}
/**
* hasRows
*
* @return has rows
*/
public boolean hasRows() {
return table.hasRows();
}
/**
* addDocumentHandlerExtension
*
* @param handlerExtension
*/
public void addDocumentHandlerExtension(DocumentHandlerExtension handlerExtension) {
docHandlerExtensionList.add(handlerExtension);
}
@Override
public void addFolderHandlerExtension(FolderHandlerExtension handlerExtension) {
folderHandlerExtensionList.add(handlerExtension);
}
@Override
public void addMailHandlerExtension(MailHandlerExtension handlerExtension) {
mailHandlerExtensionList.add(handlerExtension);
}
@Override
public void fireEvent(DocumentEventConstant event) {
for ( DocumentHandlerExtension handlerExtension : docHandlerExtensionList) {
handlerExtension.onChange(event);
}
}
@Override
public void fireEvent(FolderEventConstant event) {
for ( FolderHandlerExtension handlerExtension : folderHandlerExtensionList) {
handlerExtension.onChange(event);
}
}
@Override
public void fireEvent(MailEventConstant event) {
for ( MailHandlerExtension handlerExtension : mailHandlerExtensionList) {
handlerExtension.onChange(event);
}
}
}