com.ikon.frontend.client.widget.mainmenu.Bookmark.java Source code

Java tutorial

Introduction

Here is the source code for com.ikon.frontend.client.widget.mainmenu.Bookmark.java

Source

/**
 * openkm, Open Document Management System (http://www.openkm.com)
 * Copyright (c) 2006-2013 Paco Avila & Josep Llort
 * 
 * No bytes were intentionally harmed during the development of this application.
 * 
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License along
 * with this program; if not, write to the Free Software Foundation, Inc.,
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */

package com.ikon.frontend.client.widget.mainmenu;

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

import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.MenuBar;
import com.google.gwt.user.client.ui.MenuItem;
import com.ikon.frontend.client.Main;
import com.ikon.frontend.client.bean.GWTBookmark;
import com.ikon.frontend.client.service.OKMBookmarkService;
import com.ikon.frontend.client.service.OKMBookmarkServiceAsync;
import com.ikon.frontend.client.service.OKMUserConfigService;
import com.ikon.frontend.client.service.OKMUserConfigServiceAsync;
import com.ikon.frontend.client.util.CommonUI;
import com.ikon.frontend.client.util.Util;
import com.ikon.frontend.client.widget.ConfirmPopup;
import com.ikon.frontend.client.widget.startup.StartUp;

/**
 * Bookmark on menu
 * 
 * @author jllort
 * 
 */
public class Bookmark {

    private final OKMBookmarkServiceAsync bookmarkService = (OKMBookmarkServiceAsync) GWT
            .create(OKMBookmarkService.class);
    private final OKMUserConfigServiceAsync userConfigService = (OKMUserConfigServiceAsync) GWT
            .create(OKMUserConfigService.class);

    public static final String BOOKMARK_DOCUMENT = "openkm:document";
    public static final String BOOKMARK_FOLDER = "openkm:folder";

    private List<MenuItem> bookmarks = new ArrayList<MenuItem>();
    private String uuid = "";
    private String nodePath = "";
    private boolean document = false;

    /**
     * Bookmark
     */
    public Bookmark() {
    }

    /**
     * Inits on first load
     */
    public void init() {
        getAll();
    }

    /**
     * Callback get all
     */
    final AsyncCallback<List<GWTBookmark>> callbackGetAll = new AsyncCallback<List<GWTBookmark>>() {
        public void onSuccess(List<GWTBookmark> result) {
            List<GWTBookmark> bookmarkList = result;
            MenuBar subMenuBookmark = Main.get().mainPanel.topPanel.mainMenu.subMenuBookmark;

            // Resets all bookmark menu
            resetMenu();
            bookmarks = new ArrayList<MenuItem>();

            for (Iterator<GWTBookmark> it = bookmarkList.iterator(); it.hasNext();) {
                final GWTBookmark bookmark = it.next();
                String icon = "";

                if (bookmark.getType().equals(BOOKMARK_DOCUMENT)) {
                    icon = "img/icon/menu/document_bookmark.gif";
                } else if (bookmark.getType().equals(BOOKMARK_FOLDER)) {
                    icon = "img/icon/menu/folder_bookmark.gif";
                }

                MenuItem tmpBookmark = new MenuItem(Util.menuHTML(icon, bookmark.getName()), true, new Command() {
                    public void execute() {
                        bookmarkService.get(bookmark.getId(), new AsyncCallback<GWTBookmark>() {
                            @Override
                            public void onSuccess(GWTBookmark result) {
                                String validPath = result.getPath();
                                if (result.getType().equals(BOOKMARK_DOCUMENT) && validPath != null
                                        && !validPath.equals("")) {
                                    // Opens folder passed by parameter
                                    String path = validPath.substring(0, validPath.lastIndexOf("/"));
                                    CommonUI.openPath(path, validPath);

                                } else if (bookmark.getType().equals(BOOKMARK_FOLDER) && validPath != null
                                        && !validPath.equals("")) {
                                    // Opens document passed by parameter
                                    CommonUI.openPath(validPath, "");
                                }
                            }

                            @Override
                            public void onFailure(Throwable caught) {
                                Main.get().showError("getBookmark", caught);
                            }
                        });
                    }
                });

                tmpBookmark.addStyleName("okm-MainMenuItem");
                subMenuBookmark.addItem(tmpBookmark);
                bookmarks.add(tmpBookmark); // Save menuItem to list to refreshing management
            }

            Main.get().startUp.nextStatus(StartUp.STARTUP_INIT_TREE_NODES); // Sets the next status to loading
        }

        public void onFailure(Throwable caught) {
            Main.get().showError("getAll", caught);
        }
    };

    /**
     * Callback add
     */
    final AsyncCallback<GWTBookmark> callbackAdd = new AsyncCallback<GWTBookmark>() {
        public void onSuccess(GWTBookmark result) {

            MenuBar subMenuBookmark = Main.get().mainPanel.topPanel.mainMenu.subMenuBookmark;
            final GWTBookmark bookmark = result;

            String icon = "";

            if (bookmark.getType().equals(BOOKMARK_DOCUMENT)) {
                icon = "img/icon/menu/document_bookmark.gif";
            } else if (bookmark.getType().equals(BOOKMARK_FOLDER)) {
                icon = "img/icon/menu/folder_bookmark.gif";
            }

            MenuItem tmpBookmark = new MenuItem(Util.menuHTML(icon, bookmark.getName()), true, new Command() {
                public void execute() {
                    bookmarkService.get(bookmark.getId(), new AsyncCallback<GWTBookmark>() {
                        @Override
                        public void onSuccess(GWTBookmark result) {
                            String validPath = result.getPath();

                            if (result.getType().equals(BOOKMARK_DOCUMENT) && validPath != null
                                    && !validPath.equals("")) {
                                // Opens folder passed by parameter
                                String path = validPath.substring(0, validPath.lastIndexOf("/"));
                                CommonUI.openPath(path, validPath);
                            } else if (bookmark.getType().equals(BOOKMARK_FOLDER) && validPath != null
                                    && !validPath.equals("")) {
                                // Opens document passed by parameter
                                CommonUI.openPath(validPath, "");
                            }
                        }

                        @Override
                        public void onFailure(Throwable caught) {
                            Main.get().showError("getBookmark", caught);
                        }
                    });
                }
            });

            tmpBookmark.addStyleName("okm-MainMenuItem");
            subMenuBookmark.addItem(tmpBookmark);
            bookmarks.add(tmpBookmark); // Save menuItem to list to refreshing management
        }

        public void onFailure(Throwable caught) {
            Main.get().showError("add", caught);
        }
    };

    /**
     * Callback set user home
     */
    final AsyncCallback<Object> callbackSetUserHome = new AsyncCallback<Object>() {
        public void onSuccess(Object result) {
            String user = Main.get().workspaceUserProperties.getUser().getId();

            if (document) {
                Main.get().mainPanel.topPanel.toolBar.setUserHome(user, uuid, nodePath, BOOKMARK_DOCUMENT);
            } else {
                Main.get().mainPanel.topPanel.toolBar.setUserHome(user, uuid, nodePath, BOOKMARK_FOLDER);
            }
        }

        public void onFailure(Throwable caught) {
            Main.get().showError("setUserHome", caught);
        }
    };

    /**
     * Resets all widgets on menu
     */
    private void resetMenu() {
        if (!bookmarks.isEmpty()) {
            MenuBar subMenuBookmark = Main.get().mainPanel.topPanel.mainMenu.subMenuBookmark;

            for (Iterator<MenuItem> it = bookmarks.iterator(); it.hasNext();) {
                subMenuBookmark.removeItem(it.next());
            }
        }
    }

    /**
     * Gets the bookmark list from the server
     * 
     */
    public void getAll() {
        bookmarkService.getAll(callbackGetAll);
    }

    /**
     * Adds a bookmark
     * 
     * @param nodePath String The node path
     * @param name String The bookmark name
     * @param document boolean is document
     */
    public void add(String nodePath, String name) {
        bookmarkService.add(nodePath, name, callbackAdd);
    }

    /**
     * Sets the user home
     * 
     */
    public void setUserHome() {
        if (nodePath != null && !nodePath.equals("")) {
            userConfigService.setUserHome(nodePath, callbackSetUserHome);
        }
    }

    /**
     * Show confirmation to set default home
     * 
     * @param nodePath String The node path
     * @param document boolean is document
     */
    public void confirmSetHome(String uuid, String nodePath, boolean document) {
        this.uuid = uuid;
        this.nodePath = nodePath;
        this.document = document;
        Main.get().confirmPopup.setConfirm(ConfirmPopup.CONFIRM_SET_DEFAULT_HOME);
        Main.get().confirmPopup.show();
    }
}