Java tutorial
/** * OpenKM, Open Document Management System (http://www.openkm.com) * Copyright (c) 2006-2015 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.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.AbstractScrollTable.ScrollTableImages; import com.google.gwt.gen2.table.client.FixedWidthFlexTable; import com.google.gwt.gen2.table.client.FixedWidthGrid; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.AbstractImagePrototype; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.FileUpload; 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.FileToUpload; 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.GWTPaginated; import com.openkm.frontend.client.bean.GWTProfileFileBrowser; import com.openkm.frontend.client.bean.GWTProfilePagination; import com.openkm.frontend.client.bean.ToolBarOption; import com.openkm.frontend.client.constants.ui.UIDesktopConstants; import com.openkm.frontend.client.constants.ui.UIFileUploadConstants; 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.OKMMassiveService; import com.openkm.frontend.client.service.OKMMassiveServiceAsync; import com.openkm.frontend.client.service.OKMNotifyService; import com.openkm.frontend.client.service.OKMNotifyServiceAsync; import com.openkm.frontend.client.service.OKMPaginationService; import com.openkm.frontend.client.service.OKMPaginationServiceAsync; import com.openkm.frontend.client.util.OKMBundleResources; import com.openkm.frontend.client.util.ScrollTableHelper; 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.filebrowser.menu.CategoriesMenu; import com.openkm.frontend.client.widget.filebrowser.menu.MailMenu; import com.openkm.frontend.client.widget.filebrowser.menu.MetadataMenu; 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; /** * 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; // Refreshing next controler values private static final int GET_NONE = -1; private static final int GET_FOLDERS = 0; private static final int GET_DOCUMENTS = 1; private static final int GET_MAILS = 2; private static final int GET_ENDS = 3; // 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; public static final int ACTION_PROPERTY_GROUP_REFRESH_FOLDER = 4; public static final int ACTION_PROPERTY_GROUP_REFRESH_DOCUMENT = 5; public static final int ACTION_PROPERTY_GROUP_REFRESH_MAIL = 6; // Number of columns private int numberOfColumns = 0; 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 final OKMMassiveServiceAsync massiveService = (OKMMassiveServiceAsync) GWT .create(OKMMassiveService.class); private final OKMPaginationServiceAsync paginationService = (OKMPaginationServiceAsync) GWT .create(OKMPaginationService.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 metadataMenuPopup; public MenuPopup thesaurusMenuPopup; public MenuPopup trashMenuPopup; public MenuPopup templatesMenuPopup; public MenuPopup personalMenuPopup; public MenuPopup mailMenuPopup; public MenuPopup massiveOperationsMenuPopup; public Status status; private com.openkm.frontend.client.widget.massive.Status massiveStatus; private FileTextBox fileTextBox; private String fldId; // Indicates if panel is selected private boolean panelSelected = false; // Used to continue selecting the same row before resfreshing the same directory private String selectedRowId = ""; // Used on rename to preserve initial value name private String initialRowValueName = ""; private GWTFolder tmpFolder; // To control rename and create folder actions public int fileBrowserAction = ACTION_NONE; // Used to indicate the actual view private int actualView = UIDesktopConstants.NAVIGATOR_TAXONOMY; private HashMap<String, Controller> viewValues; private int numberOfFolders = 0; private int numberOfDocuments = 0; private int numberOfMails = 0; private List<DocumentHandlerExtension> docHandlerExtensionList; private List<FolderHandlerExtension> folderHandlerExtensionList; private List<MailHandlerExtension> mailHandlerExtensionList; // columns index private GWTProfileFileBrowser profileFileBrowser; private GWTProfilePagination profilePagination; private int colNameIndex = 0; private int colSizeIndex = 0; private int colLastModifiedIndex = 0; private int colAuthorIndex = 0; private int colVersionIndex = 0; // Controller private FileBrowserController fBController; private int nextRefresh = GET_NONE; /** * FileBrowser */ public FileBrowser() { // Sets the actual view and view values hashMap object actualView = UIDesktopConstants.NAVIGATOR_TAXONOMY; viewValues = new HashMap<String, Controller>(); 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("100%", "100%"); table.setCellSpacing(0); table.setCellPadding(0); 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"); metadataMenuPopup = new MenuPopup(new MetadataMenu()); metadataMenuPopup.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"); massiveOperationsMenuPopup = new MenuPopup(new MassiveOperationsMenu()); massiveOperationsMenuPopup.setStyleName("okm-Tree-MenuPopup"); status = new Status(this); status.setStyleName("okm-StatusPopup"); massiveStatus = new com.openkm.frontend.client.widget.massive.Status(this); massiveStatus.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() { fBController.clearOrderBy(); fBController.addOrderByItem("", String.valueOf(GWTPaginated.COL_NONE)); int row = 0; if (profilePagination.isPaginationEnabled() || profilePagination.isTypeFilterEnabled() || profilePagination.isMiscFilterEnabled()) { row++; } if (profileFileBrowser.isIconVisible()) { fBController.addOrderByItem(Main.i18n("filebrowser.type"), String.valueOf(GWTPaginated.COL_TYPE)); } if (profileFileBrowser.isNameVisible()) { headerTable.setHTML(row, colNameIndex, Main.i18n("filebrowser.name")); fBController.addOrderByItem(Main.i18n("filebrowser.name"), String.valueOf(GWTPaginated.COL_NAME)); } if (profileFileBrowser.isSizeVisible()) { headerTable.setHTML(row, colSizeIndex, Main.i18n("filebrowser.size")); fBController.addOrderByItem(Main.i18n("filebrowser.size"), String.valueOf(GWTPaginated.COL_SIZE)); } if (profileFileBrowser.isLastModifiedVisible()) { headerTable.setHTML(row, colLastModifiedIndex, Main.i18n("filebrowser.date.update")); fBController.addOrderByItem(Main.i18n("filebrowser.date.update"), String.valueOf(GWTPaginated.COL_DATE)); } if (profileFileBrowser.isAuthorVisible()) { headerTable.setHTML(row, colAuthorIndex, Main.i18n("filebrowser.author")); fBController.addOrderByItem(Main.i18n("filebrowser.author"), String.valueOf(GWTPaginated.COL_AUTHOR)); } if (profileFileBrowser.isVersionVisible()) { headerTable.setHTML(row, colVersionIndex, Main.i18n("filebrowser.version")); fBController.addOrderByItem(Main.i18n("filebrowser.version"), String.valueOf(GWTPaginated.COL_VERSION)); } filePath.langRefresh(); taxonomyMenuPopup.langRefresh(); thesaurusMenuPopup.langRefresh(); trashMenuPopup.langRefresh(); personalMenuPopup.langRefresh(); templatesMenuPopup.langRefresh(); mailMenuPopup.langRefresh(); fBController.langRefresh(); } /** * Refresh the panel * * @param fldId The path id */ public void refresh(String fldId) { // Try catch to prevent non controled error which stop filebrowser and not send finish signal to folder tree try { 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; // Preparing for refreshing removeAllRows(); if (fBController.isPaginated()) { enableDefaultTableSorter(false); Main.get().mainPanel.desktop.browser.fileBrowser.status.setFlagGetChilds(); paginationService.getChildrenPaginated(fldId, true, fBController.getOffset(), fBController.getLimit(), fBController.getSelectedOrderBy(), fBController.isReverse(), fBController.isShowFolder(), fBController.isShowDocument(), fBController.isShowMail(), selectedRowId, fBController.getFilter(), new AsyncCallback<GWTPaginated>() { @Override public void onSuccess(GWTPaginated result) { // Try catch to prevent non controled error which stop filebrowser and not send finish signal to folder tree try { if (result.isOutOfRange()) { result.setOutOfRange(false); fBController.setOffset(result.getNewOffset()); } numberOfFolders = result.getTotalFolder(); numberOfDocuments = result.getTotalDocuments(); numberOfMails = result.getTotalMails(); Main.get().mainPanel.desktop.browser.tabMultiple.tabFolder .setNumberOfFolders(numberOfFolders); Main.get().mainPanel.desktop.browser.tabMultiple.tabFolder .setNumberOfDocuments(numberOfDocuments); Main.get().mainPanel.desktop.browser.tabMultiple.tabFolder .setNumberOfMails(numberOfMails); for (Object obj : result.getObjects()) { if (obj instanceof GWTFolder) { addRow((GWTFolder) obj); } else if (obj instanceof GWTDocument) { addRow((GWTDocument) obj); } else if (obj instanceof GWTMail) { addRow((GWTMail) obj); } } selectSelectedRowInTable(); fBController.updateTotal(result.getTotal()); fBController.refresh(); Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagGetChilds(); Main.get().activeFolderTree.fileBrowserRefreshDone(); } catch (Exception e) { Main.get().activeFolderTree.fileBrowserRefreshDone(); } } @Override public void onFailure(Throwable caught) { Main.get().showError("getChildrenPaginated", caught); Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagGetChilds(); Main.get().activeFolderTree.fileBrowserRefreshDone(); } }); } else { enableDefaultTableSorter(true); nextRefresh = GET_FOLDERS; nextRefresh(); } // On initialization fldId==null if (fldId != null) { filePath.setPath(fldId); } } catch (Exception e) { Main.get().activeFolderTree.fileBrowserRefreshDone(); } } /** * nextRefresh */ private void nextRefresh() { switch (nextRefresh) { case GET_NONE: break; case GET_FOLDERS: if (fBController.getController().isShowFolder()) { getFolderChilds(fldId); } else { Main.get().mainPanel.desktop.browser.tabMultiple.tabFolder.setNumberOfFolders(0); nextRefresh = GET_DOCUMENTS; nextRefresh(); } break; case GET_DOCUMENTS: if (fBController.getController().isShowDocuments()) { getDocumentChilds(fldId); } else { Main.get().mainPanel.desktop.browser.tabMultiple.tabFolder.setNumberOfDocuments(0); nextRefresh = GET_MAILS; nextRefresh(); } break; case GET_MAILS: if (fBController.getController().isShowMails()) { getMailChilds(fldId); } else { Main.get().mainPanel.desktop.browser.tabMultiple.tabFolder.setNumberOfMails(0); nextRefresh = GET_ENDS; nextRefresh(); } break; case GET_ENDS: // Selects the selected row in table fBController.updateTotal((numberOfFolders + numberOfDocuments + numberOfMails)); selectSelectedRowInTable(); if (table.isSorted()) { table.refreshSort(); } nextRefresh = GET_NONE; Main.get().activeFolderTree.fileBrowserRefreshDone(); break; } } /** * Removes all rows except the first */ private void removeAllRows() { // Purge all rows while (dataTable.getRowCount() > 0) { dataTable.removeRow(0); } table.getDataTable().resize(0, numberOfColumns); } /** * 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) { if (fBController.isShowFolder()) { if (fBController.isPaginated()) { // Values has been changed is not sure folder will be visible, needed refreshing refreshOnlyFileBrowser(); } else { 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) { // Try catch to prevent non controlled error which stop filebrowser and not send finish signal to folder tree try { List<GWTFolder> folderList = result; numberOfFolders = folderList.size(); Main.get().mainPanel.desktop.browser.tabMultiple.tabFolder.setNumberOfFolders(numberOfFolders); for (GWTFolder folder : folderList) { addRow(folder); } Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagFolderChilds(); nextRefresh = GET_DOCUMENTS; nextRefresh(); } catch (Exception e) { Main.get().activeFolderTree.fileBrowserRefreshDone(); } } public void onFailure(Throwable caught) { Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagFolderChilds(); Main.get().showError("GetFolderChilds", caught); Main.get().activeFolderTree.fileBrowserRefreshDone(); } }; /** * Refresh the document childs */ final AsyncCallback<List<GWTDocument>> callbackGetDocumentChilds = new AsyncCallback<List<GWTDocument>>() { public void onSuccess(List<GWTDocument> result) { // Try catch to prevent non controlled error which stop filebrowser and not send finish signal to folder tree try { List<GWTDocument> documentList = result; numberOfDocuments = result.size(); Main.get().mainPanel.desktop.browser.tabMultiple.tabFolder.setNumberOfDocuments(numberOfDocuments); for (GWTDocument doc : documentList) { addRow(doc); } Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagDocumentChilds(); nextRefresh = GET_MAILS; nextRefresh(); } catch (Exception e) { Main.get().activeFolderTree.fileBrowserRefreshDone(); } } public void onFailure(Throwable caught) { Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagDocumentChilds(); Main.get().showError("GetDocumentChilds", caught); Main.get().activeFolderTree.fileBrowserRefreshDone(); } }; /** * Refresh the document childs */ final AsyncCallback<List<GWTMail>> callbackGetMailChilds = new AsyncCallback<List<GWTMail>>() { public void onSuccess(List<GWTMail> result) { // Try catch to prevent non controlled error which stop filebrowser and not send finish signal to folder tree try { List<GWTMail> mailList = result; numberOfMails = result.size(); Main.get().mainPanel.desktop.browser.tabMultiple.tabFolder.setNumberOfMails(numberOfMails); for (GWTMail mail : mailList) { addRow(mail); } Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagMailChilds(); nextRefresh = GET_ENDS; nextRefresh(); } catch (Exception e) { Main.get().activeFolderTree.fileBrowserRefreshDone(); } } public void onFailure(Throwable caught) { Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagMailChilds(); Main.get().showError("GetMailChilds", caught); Main.get().activeFolderTree.fileBrowserRefreshDone(); } }; /** * 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); } } } } } if (fBController.isPaginated() && !table.isSelectedRow()) { Main.get().activeFolderTree.showTabFolderProperties(); } 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(); // Marks flag to ensure all RPC calls has finished before document download Main.get().mainPanel.dashboard.userDashboard.setPendingCheckoutDocumentFlag(); Main.get().mainPanel.dashboard.userDashboard.getUserCheckedOutDocuments(); table.downloadDocument(true); // Document download is made after finishing refresh although there's RPC call in // getUserCheckedOutDocuments we suppose refresh it'll be more slower, and download // must be done after last RPC call is finished refresh(fldId); Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagCheckout(); } public void onFailure(Throwable caught) { Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagCheckout(); Main.get().showError("CheckOut", caught); } }; /** * Document cancel checkout */ final AsyncCallback<Object> callbackCancelCheckOut = new AsyncCallback<Object>() { public void onSuccess(Object result) { mantainSelectedRow(); refresh(fldId); Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagCheckout(); 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(); refresh(fldId); Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagCheckout(); 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(); refresh(fldId); Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagLock(); 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(); refresh(fldId); Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagUnLock(); 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(); refresh(fldId); Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagUnLock(); 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(), colNameIndex, 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(), colNameIndex, 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(), colNameIndex, 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) { switch (fileBrowserAction) { case 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; break; case ACTION_PROPERTY_GROUP_REFRESH_FOLDER: table.setFolder(result); Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagGetFolder(); fileBrowserAction = ACTION_NONE; break; } } public void onFailure(Throwable caught) { fileBrowserAction = ACTION_NONE; // Ensures on error folder action be restored Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagGetFolder(); Main.get().showError("GetFolder", caught); } }; /** * Gets actual document row selected */ final AsyncCallback<GWTDocument> callbackGetDocument = new AsyncCallback<GWTDocument>() { public void onSuccess(GWTDocument result) { switch (fileBrowserAction) { case 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; break; case ACTION_PROPERTY_GROUP_REFRESH_DOCUMENT: table.setDocument(result); Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagGetDocument(); fileBrowserAction = ACTION_NONE; break; } } public void onFailure(Throwable caught) { fileBrowserAction = ACTION_NONE; // Ensures on error folder action be restored Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagGetDocument(); Main.get().showError("GetDocument", caught); } }; /** * Gets actual mail row selected */ final AsyncCallback<GWTMail> callbackGetMailProperties = new AsyncCallback<GWTMail>() { public void onSuccess(GWTMail result) { switch (fileBrowserAction) { case ACTION_SECURITY_REFRESH_MAIL: GWTMail gWTMail = result; table.setMail(gWTMail); Main.get().mainPanel.desktop.browser.tabMultiple.tabMail.setProperties(gWTMail); Main.get().mainPanel.topPanel.toolBar.checkToolButtonPermissions(gWTMail, Main.get().activeFolderTree.getFolder()); Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagMailProperties(); fileBrowserAction = ACTION_NONE; break; case ACTION_PROPERTY_GROUP_REFRESH_MAIL: table.setMail(result); Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagMailProperties(); fileBrowserAction = ACTION_NONE; break; } } public void onFailure(Throwable caught) { fileBrowserAction = ACTION_NONE; // Ensures on error folder action be restored Main.get().mainPanel.desktop.browser.fileBrowser.status.unsetFlagMailProperties(); Main.get().showError("GetMail", 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 Main.get().mainPanel.desktop.browser.fileBrowser.status.setFlagFolderChilds(); if (Main.get().mainPanel.desktop.navigator.getStackIndex() == UIDesktopConstants.NAVIGATOR_CATEGORIES) { folderService.getCategorizedChilds(fldId, fBController.getFilter(), callbackGetFolderChilds); } else if (Main.get().mainPanel.desktop.navigator .getStackIndex() == UIDesktopConstants.NAVIGATOR_THESAURUS) { folderService.getThesaurusChilds(fldId, fBController.getFilter(), callbackGetFolderChilds); } else if (Main.get().mainPanel.desktop.navigator .getStackIndex() == UIDesktopConstants.NAVIGATOR_METADATA) { folderService.getMetadataChilds(fldId, fBController.getFilter(), callbackGetFolderChilds); } else { folderService.getChilds(fldId, true, fBController.getFilter(), callbackGetFolderChilds); } } /** * Gets the document childs list from the server * * @param fldId The path id */ public void getDocumentChilds(String fldId) { Main.get().mainPanel.desktop.browser.fileBrowser.status.setFlagDocumentChilds(); documentService.getChilds(fldId, fBController.getFilter(), callbackGetDocumentChilds); } /** * Gets the mail childs list from the server * * @param fldId The path id */ public void getMailChilds(String fldId) { Main.get().mainPanel.desktop.browser.fileBrowser.status.setFlagMailChilds(); mailService.getChilds(fldId, fBController.getFilter(), callbackGetMailChilds); } /** * Gets the actual folder (actualItem) and refresh all information on it */ public void refreshFolderValues() { if (table.isFolderSelected()) { 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 */ public void refreshDocumentValues() { 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 */ public void refreshMailValues() { Main.get().mainPanel.desktop.browser.fileBrowser.status.setFlagMailProperties(); mailService.getProperties(((GWTMail) table.getMail()).getPath(), callbackGetMailProperties); } /** * Show the browser menu */ public void showMenu() { MenuPopup menuPopup = getActualMenuPopup(); // For all menus except trash if (menuPopup != null) { menuPopup.setPopupPosition(table.getMouseX(), table.getMouseY()); if (!table.isDocumentSelected() && !table.isFolderSelected() && !table.isMailSelected()) { menuPopup.disableAllOptions(); } menuPopup.show(); } } /** * setOptions */ public void setOptions(ToolBarOption toolBarOption) { MenuPopup menuPopup = getActualMenuPopup(); if (menuPopup != null) { menuPopup.setOptions(toolBarOption); } } /** * disableAllOptions */ public void disableAllOptions() { MenuPopup menuPopup = getActualMenuPopup(); if (menuPopup != null) { menuPopup.disableAllOptions(); } } /** * enableAddPropertyGroup */ public void enableAddPropertyGroup() { MenuPopup menuPopup = getActualMenuPopup(); if (menuPopup != null) { menuPopup.enableAddPropertyGroup(); } } /** * disableAddPropertyGroup */ public void disableAddPropertyGroup() { MenuPopup menuPopup = getActualMenuPopup(); if (menuPopup != null) { menuPopup.disableAddPropertyGroup(); } } /** * enablePdfMerge */ public void enablePdfMerge() { MenuPopup menuPopup = getActualMenuPopup(); if (menuPopup != null) { menuPopup.enablePdfMerge(); } } /** * disablePdfMerge */ public void disablePdfMerge() { MenuPopup menuPopup = getActualMenuPopup(); if (menuPopup != null) { menuPopup.disablePdfMerge(); } } /** * getActualMenuPopup */ private MenuPopup getActualMenuPopup() { MenuPopup menuPopup = null; // The browser menu depends on actual view switch (actualView) { case UIDesktopConstants.NAVIGATOR_TAXONOMY: menuPopup = taxonomyMenuPopup; break; case UIDesktopConstants.NAVIGATOR_CATEGORIES: menuPopup = categoriesMenuPopup; break; case UIDesktopConstants.NAVIGATOR_THESAURUS: menuPopup = thesaurusMenuPopup; break; case UIDesktopConstants.NAVIGATOR_METADATA: menuPopup = metadataMenuPopup; break; case UIDesktopConstants.NAVIGATOR_TRASH: menuPopup = trashMenuPopup; break; case UIDesktopConstants.NAVIGATOR_TEMPLATES: menuPopup = templatesMenuPopup; break; case UIDesktopConstants.NAVIGATOR_PERSONAL: menuPopup = personalMenuPopup; break; case UIDesktopConstants.NAVIGATOR_MAIL: menuPopup = mailMenuPopup; break; } return menuPopup; } /** * Show a previos message to confirm delete */ public void confirmDelete() { if (Main.get().mainPanel.desktop.browser.fileBrowser.isMassive()) { Main.get().confirmPopup.setConfirm(ConfirmPopup.CONFIRM_DELETE_MASSIVE); Main.get().confirmPopup.center(); } else { 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()); 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()); 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()); 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) { Main.get().mainPanel.desktop.browser.fileBrowser.status.setFlagAddSubscription(); notifyService.subscribe(table.getDocument().getPath(), callbackAddSubscription); } else if (table.isFolderSelected() && table.getFolder() != null) { 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) { Main.get().mainPanel.desktop.browser.fileBrowser.status.setFlagRemoveSubscription(); notifyService.unsubscribe(table.getDocument().getPath(), callbackRemoveSubscription); } else if (table.isFolderSelected() && table.getFolder() != null) { 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) { Main.get().mainPanel.desktop.browser.fileBrowser.status.setFlagDocumentPurge(); documentService.purge(table.getDocument().getPath(), callbackPurgeDocument); } else if (table.isFolderSelected() && table.getFolder() != null) { Main.get().mainPanel.desktop.browser.fileBrowser.status.setFlagFolderPurge(); folderService.purge(table.getFolder().getPath(), callbackPurgeFolder); } else if (table.isMailSelected() && table.getMail() != null) { Main.get().mainPanel.desktop.browser.fileBrowser.status.setFlagMailPurge(); mailService.purge(table.getMail().getPath(), callbackPurgeMail); } } /** * massiveDownload */ public void massiveDownload() { table.downloadDocuments(false, table.getAllSelectedDocumentsUUIDs()); } /** * Document checkout */ public void checkout() { if (table.isDocumentSelected() && table.getDocument() != null) { Main.get().mainPanel.desktop.browser.fileBrowser.status.setFlagCheckout(); documentService.checkout(table.getDocument().getPath(), callbackCheckOut); } } /** * Execute checkin */ public void checkin() { if (table.isDocumentSelected() && table.getDocument() != null) { 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.addPendingFileToUpload(fileToUpload); } } /** * Document cancel checkout */ public void cancelCheckout() { if (table.isDocumentSelected() && table.getDocument() != null) { 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) { 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) { 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) { Main.get().mainPanel.desktop.browser.fileBrowser.status.setFlagUnLock(); documentService.unlock(table.getDocument().getPath(), callbackUnLock); } } /** * lockMasive */ public void lockMasive() { massiveStatus.setFlagLock(); massiveService.lock(Main.get().mainPanel.desktop.browser.fileBrowser.table.getAllSelectedDocumentsPaths(), new AsyncCallback<Object>() { @Override public void onSuccess(Object result) { massiveStatus.unsetFlagLock(); Main.get().mainPanel.topPanel.toolBar.executeRefresh(); } @Override public void onFailure(Throwable caught) { massiveStatus.unsetFlagLock(); Main.get().showError("lock", caught); } }); } /** * unlockMasive */ public void unlockMasive() { massiveStatus.setFlagUnlock(); massiveService.unlock(Main.get().mainPanel.desktop.browser.fileBrowser.table.getAllSelectedDocumentsPaths(), new AsyncCallback<Object>() { @Override public void onSuccess(Object result) { massiveStatus.unsetFlagUnlock(); Main.get().mainPanel.topPanel.toolBar.executeRefresh(); } @Override public void onFailure(Throwable caught) { massiveStatus.unsetFlagUnlock(); Main.get().showError("unlock", caught); } }); } /** * Document force unlock */ public void forceUnlock() { if (table.isDocumentSelected() && table.getDocument() != null) { 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) { Main.get().mainPanel.desktop.browser.fileBrowser.status.setFlagDocumentRename(); documentService.rename(table.getDocument().getPath(), newName, callbackDocumentRename); } else if (table.isFolderSelected() && table.getFolder() != null) { Main.get().mainPanel.desktop.browser.fileBrowser.status.setFlagFolderRename(); folderService.rename(table.getFolder().getPath(), newName, callbackFolderRename); } else if (table.isMailSelected() && table.getMail() != null) { Main.get().mainPanel.desktop.browser.fileBrowser.status.setFlagMailRename(); mailService.rename(table.getMail().getPath(), newName, callbackMailRename); } } /** * Gets the document path */ public String getPath() { if (table.getDocument() != null) { return table.getDocument().getPath(); } else if (table.getFolder() != null) { return table.getFolder().getPath(); } else if (table.getMail() != null) { return table.getMail().getPath(); } else { return null; } } /** * Maintain the selected row after refresh */ public void mantainSelectedRow() { selectedRowId = table.getSelectedId(); } /** * refreshOnlyFileBrowser */ public void refreshOnlyFileBrowser() { if (!fBController.isPaginated()) { mantainSelectedRow(); } refresh(fldId); } /** * Mantain the selected row by Path * * @param path */ public void mantainSelectedRowByPath(String path) { selectedRowId = path; } /** * cleanAllFilteringValues */ public void cleanAllFilteringValues() { fBController.cleanAllByOpenFolderPath(); } /** * 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(), colNameIndex); fileTextBox.setText(initialRowValueName); dataTable.setWidget(table.getSelectedRow(), colNameIndex, fileTextBox); dataTable.getCellFormatter().removeStyleName(table.getSelectedRow(), colNameIndex, "okm-DisableSelect"); fileTextBox.setFocus(); table.setAction(ExtendedScrollTable.ACTION_RENAMING); if (table.isFolderSelected() && table.getFolder() != null) { tmpFolder = table.getFolder(); } } } /** * 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, colNameIndex, initialRowValueName); initialRowValueName = ""; table.resetAction(); Main.get().mainPanel.enableKeyShorcuts(); // Enables general keys // applications } /** * Save changes to the actual view */ public void changeView(int view) { if (table.getSelectedRow() >= 0) { fBController.setSelectedRowId(table.getSelectedId()); } else { fBController.setSelectedRowId(null); } // Saves actual view values on hashMap switch (actualView) { case UIDesktopConstants.NAVIGATOR_TAXONOMY: viewValues.put("view_root:controller", fBController.getController()); break; case UIDesktopConstants.NAVIGATOR_TRASH: viewValues.put("view_trash:controller", fBController.getController()); break; case UIDesktopConstants.NAVIGATOR_TEMPLATES: viewValues.put("view_templates:controller", fBController.getController()); break; case UIDesktopConstants.NAVIGATOR_PERSONAL: viewValues.put("view_my_documents:controller", fBController.getController()); break; case UIDesktopConstants.NAVIGATOR_MAIL: viewValues.put("view_mail:controller", fBController.getController()); break; case UIDesktopConstants.NAVIGATOR_CATEGORIES: viewValues.put("view_categories:controller", fBController.getController()); break; case UIDesktopConstants.NAVIGATOR_THESAURUS: viewValues.put("view_thesaurus:controller", fBController.getController()); break; case UIDesktopConstants.NAVIGATOR_METADATA: viewValues.put("view_metadata:controller", fBController.getController()); break; } if (table.getSelectedRow() > 0) { table.resetSelectedRows(); } // Reset values reset(); // Restores view values from hashMap switch (view) { case UIDesktopConstants.NAVIGATOR_TAXONOMY: if (viewValues.containsKey("view_root:controller")) { fBController.setController(viewValues.get("view_root:controller")); } else { fBController.setController(createDefaultController()); } break; case UIDesktopConstants.NAVIGATOR_TRASH: if (viewValues.containsKey("view_trash:controller")) { fBController.setController(viewValues.get("view_trash:controller")); } else { fBController.setController(createDefaultController()); } break; case UIDesktopConstants.NAVIGATOR_TEMPLATES: if (viewValues.containsKey("view_templates:controller")) { fBController.setController(viewValues.get("view_templates:controller")); } else { fBController.setController(createDefaultController()); } break; case UIDesktopConstants.NAVIGATOR_PERSONAL: if (viewValues.containsKey("view_my_documents:controller")) { fBController.setController(viewValues.get("view_my_documents:controller")); } else { fBController.setController(createDefaultController()); } break; case UIDesktopConstants.NAVIGATOR_MAIL: if (viewValues.containsKey("view_mail:controller")) { fBController.setController(viewValues.get("view_mail:controller")); } else { fBController.setController(createDefaultController()); } break; case UIDesktopConstants.NAVIGATOR_CATEGORIES: if (viewValues.containsKey("view_categories:controller")) { fBController.setController(viewValues.get("view_categories:controller")); } else { fBController.setController(createDefaultController()); } break; case UIDesktopConstants.NAVIGATOR_THESAURUS: if (viewValues.containsKey("view_thesaurus:controller")) { fBController.setController(viewValues.get("view_thesaurus:controller")); } else { fBController.setController(createDefaultController()); } break; case UIDesktopConstants.NAVIGATOR_METADATA: if (viewValues.containsKey("view_metadata:controller")) { fBController.setController(viewValues.get("view_metadata:controller")); } else { fBController.setController(createDefaultController()); } break; } fBController.refreshChangeView(); // Needed to refreshing UI // Restores selectedRowId if (fBController.getSelectedRowId() != null && !fBController.getSelectedRowId().equals("")) { setSelectedRowId(fBController.getSelectedRowId()); } 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_METADATA: 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(); } 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 */ public boolean isFolderSelected() { return table.isFolderSelected(); } /** * isDocumentSelected */ public boolean isDocumentSelected() { return table.isDocumentSelected(); } /** * isMailSelected */ public boolean isMailSelected() { return table.isMailSelected(); } /** * getFolder */ 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.downloadFileByUUID(getFolder().getUuid(), "export"); } } /** * addNoteIconToSelectedRow */ public void addNoteIconToSelectedRow() { table.addNoteIconToSelectedRow(); } /** * deleteNoteIconToSelectedRow */ public void deleteNoteIconToSelectedRow() { table.deleteNoteIconToSelectedRow(); } /** * hasRows * * @return has rows */ public boolean hasRows() { return table.hasRows(); } /** * selectAllMassive */ public void selectAllMassive() { table.selectAllMassive(); } /** * selectAllFoldersMassive */ public void selectAllFoldersMassive() { table.selectAllFoldersMassive(); } /** * selectAllDocumentsMassive */ public void selectAllDocumentsMassive() { table.selectAllDocumentsMassive(); } /** * selectAllMailsMassive */ public void selectAllMailsMassive() { table.selectAllMailsMassive(); } /** * removeAllMassive */ public void removeAllMassive() { table.removeAllMassive(); } /** * isMassive * * @return */ public boolean isMassive() { return table.isMassive(); } /** * getAllSelectedPaths * * @return */ public List<String> getAllSelectedPaths() { return table.getAllSelectedPaths(); } /** * getAllSelectedPdfDocuments * * @return */ public List<GWTDocument> getAllSelectedPdfDocuments() { return table.getAllSelectedPdfDocuments(); } /** * deleteMasive */ public void deleteMasive() { massiveStatus.setFlagDelete(); massiveService.delete(Main.get().mainPanel.desktop.browser.fileBrowser.getAllSelectedPaths(), new AsyncCallback<Object>() { @Override public void onSuccess(Object result) { massiveStatus.unsetFlagDelete(); Main.get().mainPanel.topPanel.toolBar.executeRefresh(); } @Override public void onFailure(Throwable caught) { massiveStatus.unsetFlagDelete(); Main.get().showError("delete", caught); } }); } /** * setProfileFileBrowser * * @param profileFileBrowser */ public void setProfileFileBrowser(GWTProfileFileBrowser profileFileBrowser, GWTProfilePagination profilePagination) { this.profileFileBrowser = profileFileBrowser; this.profilePagination = profilePagination; fBController = new FileBrowserController(); fBController.setController(createDefaultController()); int row = 0; if (profilePagination.isPaginationEnabled() || profilePagination.isTypeFilterEnabled() || profilePagination.isMiscFilterEnabled()) { fBController.setPageList(profilePagination.getPageList()); // Setting // page // list fBController.setProfilePagination(profilePagination); headerTable.setWidget(row, 0, fBController); headerTable.getFlexCellFormatter().setVerticalAlignment(row++, 0, HasAlignment.ALIGN_TOP); } int col = 0; fBController.clearOrderBy(); fBController.addOrderByItem("", String.valueOf(GWTPaginated.COL_NONE)); if (profileFileBrowser.isStatusVisible()) { headerTable.setHTML(row, col, " "); ScrollTableHelper.setColumnWidth(table, col, Integer.parseInt(profileFileBrowser.getStatusWidth()), ScrollTableHelper.FIXED); table.setColumnSortable(col++, false); } if (profileFileBrowser.isMassiveVisible()) { headerTable.setHTML(row, col, " "); final Image massive = new Image(OKMBundleResources.INSTANCE.massive()); massive.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { massiveOperationsMenuPopup.setPopupPosition(massive.getAbsoluteLeft(), massive.getAbsoluteTop() + 15); massiveOperationsMenuPopup.menu.evaluateMenuOptions(); massiveOperationsMenuPopup.show(); } }); massive.setStyleName("okm-Hyperlink"); headerTable.setWidget(row, col, massive); ScrollTableHelper.setColumnWidth(table, col, Integer.parseInt(profileFileBrowser.getMassiveWidth()), ScrollTableHelper.FIXED); table.setColumnSortable(col, false); table.setColMassiveIndex(col); // Setting real massive column index headerTable.getCellFormatter().setHorizontalAlignment(row, col++, HasAlignment.ALIGN_CENTER); } if (profileFileBrowser.isIconVisible()) { headerTable.setHTML(row, col, " "); ScrollTableHelper.setColumnWidth(table, col, Integer.parseInt(profileFileBrowser.getIconWidth()), ScrollTableHelper.FIXED); col++; fBController.addOrderByItem(Main.i18n("filebrowser.type"), String.valueOf(GWTPaginated.COL_TYPE)); } if (profileFileBrowser.isNameVisible()) { headerTable.setHTML(row, col, Main.i18n("filebrowser.name")); colNameIndex = col; ScrollTableHelper.setColumnWidth(table, col, Integer.parseInt(profileFileBrowser.getNameWidth()), ScrollTableHelper.GREAT, true, false); col++; fBController.addOrderByItem(Main.i18n("filebrowser.name"), String.valueOf(GWTPaginated.COL_NAME)); } if (profileFileBrowser.isSizeVisible()) { headerTable.setHTML(row, col, Main.i18n("filebrowser.size")); colSizeIndex = col; ScrollTableHelper.setColumnWidth(table, col, Integer.parseInt(profileFileBrowser.getSizeWidth()), ScrollTableHelper.MEDIUM); col++; fBController.addOrderByItem(Main.i18n("filebrowser.size"), String.valueOf(GWTPaginated.COL_SIZE)); } if (profileFileBrowser.isLastModifiedVisible()) { headerTable.setHTML(row, col, Main.i18n("filebrowser.date.update")); colLastModifiedIndex = col; ScrollTableHelper.setColumnWidth(table, col, Integer.parseInt(profileFileBrowser.getLastModifiedWidth()), ScrollTableHelper.MEDIUM); col++; fBController.addOrderByItem(Main.i18n("filebrowser.date.update"), String.valueOf(GWTPaginated.COL_DATE)); } if (profileFileBrowser.isAuthorVisible()) { headerTable.setHTML(row, col, Main.i18n("filebrowser.author")); colAuthorIndex = col; ScrollTableHelper.setColumnWidth(table, col, Integer.parseInt(profileFileBrowser.getAuthorWidth()), ScrollTableHelper.MEDIUM, true, false); col++; fBController.addOrderByItem(Main.i18n("filebrowser.author"), String.valueOf(GWTPaginated.COL_AUTHOR)); } if (profileFileBrowser.isVersionVisible()) { headerTable.setHTML(row, col, Main.i18n("filebrowser.version")); colVersionIndex = col; ScrollTableHelper.setColumnWidth(table, col, Integer.parseInt(profileFileBrowser.getVersionWidth()), ScrollTableHelper.FIXED); col++; fBController.addOrderByItem(Main.i18n("filebrowser.version"), String.valueOf(GWTPaginated.COL_VERSION)); } headerTable.setHTML(row, col++, ""); // used to store data numberOfColumns = col; table.setColDataIndex(numberOfColumns - 1); // Columns starts with value 0 table.setProfileFileBrowser(profileFileBrowser); if (profilePagination.isPaginationEnabled() || profilePagination.isTypeFilterEnabled() || profilePagination.isMiscFilterEnabled()) { headerTable.getFlexCellFormatter().setColSpan((row - 1), 0, numberOfColumns); } else { // If pagination is not visible default sorter shold be enabled enableDefaultTableSorter(true); } } /** * enableDefaultTableSorter */ private void enableDefaultTableSorter(boolean sortable) { int col = 0; if (profileFileBrowser.isStatusVisible()) { col++; } if (profileFileBrowser.isMassiveVisible()) { col++; } if (profileFileBrowser.isIconVisible()) { table.setColumnSortable(col++, sortable); } if (profileFileBrowser.isNameVisible()) { table.setColumnSortable(col++, sortable); } if (profileFileBrowser.isSizeVisible()) { table.setColumnSortable(col++, sortable); } if (profileFileBrowser.isLastModifiedVisible()) { table.setColumnSortable(col++, sortable); } if (profileFileBrowser.isAuthorVisible()) { table.setColumnSortable(col++, sortable); } if (profileFileBrowser.isVersionVisible()) { table.setColumnSortable(col++, sortable); } } /** * createDefaultController * * @return */ private Controller createDefaultController() { Controller controller = new Controller(); controller.setPaginated(profilePagination.isPaginationEnabled()); if (profilePagination.isTypeFilterEnabled()) { controller.setShowFolders(profilePagination.isShowFoldersEnabled()); controller.setShowDocuments(profilePagination.isShowDocumentsEnabled()); controller.setMails(profilePagination.isShowMailsEnabled()); } return controller; } /** * setFileBrowserAction * * @param fileBrowserAction */ public void setFileBrowserAction(int fileBrowserAction) { this.fileBrowserAction = fileBrowserAction; } /** * 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); } } }