com.ikon.frontend.client.widget.form.FolderSelectPopup.java Source code

Java tutorial

Introduction

Here is the source code for com.ikon.frontend.client.widget.form.FolderSelectPopup.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.form;

import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HasAlignment;
import com.google.gwt.user.client.ui.HasVerticalAlignment;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.ScrollPanel;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.ikon.frontend.client.Main;
import com.ikon.frontend.client.bean.GWTWorkspace;
import com.ikon.frontend.client.constants.ui.UIDesktopConstants;
import com.ikon.frontend.client.widget.searchin.HasSearch;

/**
 * FolderSelectPopup
 * 
 * @author jllort
 *
 */
public class FolderSelectPopup extends DialogBox {

    private ListBox contextListBox;
    private VerticalPanel vPanel;
    private HorizontalPanel hPanel;
    private HorizontalPanel hListPanel;
    private HorizontalPanel hContextPanel;
    private HTML contextTxt;
    private ScrollPanel scrollDirectoryPanel;
    private VerticalPanel verticalDirectoryPanel;
    private FolderSelectTree folderSelectTree;
    private Button cancelButton;
    private Button actionButton;
    private TextBox textBox;
    private HasSearch search;
    private boolean categoriesVisible = false;
    private boolean thesaurusVisible = false;
    private boolean templatesVisible = false;
    private boolean personalVisible = false;
    private boolean mailVisible = false;

    /**
     * FolderSelectPopup
     */
    public FolderSelectPopup() {
        // Establishes auto-close when click outside
        super(false, true);

        vPanel = new VerticalPanel();
        vPanel.setWidth("300");
        vPanel.setHeight("200");
        hPanel = new HorizontalPanel();
        hListPanel = new HorizontalPanel();
        hContextPanel = new HorizontalPanel();

        contextTxt = new HTML(Main.i18n("search.context"));
        contextListBox = new ListBox();
        contextListBox.setStyleName("okm-Select");

        contextListBox.addChangeHandler(new ChangeHandler() {
            @Override
            public void onChange(ChangeEvent event) {
                folderSelectTree
                        .changeView(Integer.parseInt(contextListBox.getValue(contextListBox.getSelectedIndex())));
            }
        });
        hContextPanel.add(contextTxt);
        hContextPanel.add(new HTML("  "));
        hContextPanel.add(contextListBox);
        hContextPanel.setCellVerticalAlignment(contextTxt, HasVerticalAlignment.ALIGN_MIDDLE);

        hListPanel.add(hContextPanel);
        hListPanel.setWidth("290");

        setText(Main.i18n("search.folder.filter"));

        scrollDirectoryPanel = new ScrollPanel();
        scrollDirectoryPanel.setSize("290", "150");
        scrollDirectoryPanel.setStyleName("okm-Popup-text");
        verticalDirectoryPanel = new VerticalPanel();
        verticalDirectoryPanel.setSize("100%", "100%");
        folderSelectTree = new FolderSelectTree();
        folderSelectTree.setSize("100%", "100%");

        verticalDirectoryPanel.add(folderSelectTree);
        scrollDirectoryPanel.add(verticalDirectoryPanel);

        cancelButton = new Button(Main.i18n("button.cancel"), new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
                hide();
            }
        });

        actionButton = new Button(Main.i18n("button.select"), new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
                textBox.setValue(folderSelectTree.getActualPath());
                if (search != null) {
                    search.metadataValueChanged();
                }
                hide();
            }
        });

        vPanel.add(new HTML("<br>"));
        vPanel.add(hListPanel);
        vPanel.add(new HTML("<br>"));
        vPanel.add(scrollDirectoryPanel);
        vPanel.add(new HTML("<br>"));
        hPanel.add(cancelButton);
        HTML space = new HTML();
        space.setWidth("50");
        hPanel.add(space);
        hPanel.add(actionButton);
        vPanel.add(hPanel);
        vPanel.add(new HTML("<br>"));

        vPanel.setCellHorizontalAlignment(hListPanel, HasAlignment.ALIGN_CENTER);
        vPanel.setCellHorizontalAlignment(scrollDirectoryPanel, HasAlignment.ALIGN_CENTER);
        vPanel.setCellHorizontalAlignment(hPanel, HasAlignment.ALIGN_CENTER);
        vPanel.setCellHeight(scrollDirectoryPanel, "150");

        cancelButton.setStyleName("okm-Input");
        actionButton.setStyleName("okm-Input");

        super.hide();
        setWidget(vPanel);
    }

    /**
     * Language refresh
     */
    public void langRefresh() {
        contextTxt.setHTML(Main.i18n("search.context"));
        setText(Main.i18n("search.folder.filter"));
        cancelButton.setText(Main.i18n("button.cancel"));
        actionButton.setText(Main.i18n("button.select"));

        removeAllContextListItems();
        int count = 0;
        contextListBox.setItemText(count++, Main.i18n("leftpanel.label.taxonomy"));
        if (categoriesVisible) {
            contextListBox.setItemText(count++, Main.i18n("leftpanel.label.categories"));
        }
        if (thesaurusVisible) {
            contextListBox.setItemText(count++, Main.i18n("leftpanel.label.thesaurus"));
        }
        if (templatesVisible) {
            contextListBox.setItemText(count++, Main.i18n("leftpanel.label.templates"));
        }
        if (personalVisible) {
            contextListBox.setItemText(count++, Main.i18n("leftpanel.label.my.documents"));
        }
        if (mailVisible) {
            contextListBox.setItemText(count++, Main.i18n("leftpanel.label.mail"));
        }
    }

    /**
     * Shows the popup 
     */
    public void show(TextBox textBox, HasSearch search) {
        this.textBox = textBox;
        this.search = search;
        int left = (Window.getClientWidth() - 300) / 2;
        int top = (Window.getClientHeight() - 200) / 2;
        setPopupPosition(left, top);

        // Resets to initial tree value
        folderSelectTree.reset();

        GWTWorkspace workspace = Main.get().workspaceUserProperties.getWorkspace();
        categoriesVisible = workspace.isStackCategoriesVisible();
        thesaurusVisible = workspace.isStackThesaurusVisible();
        templatesVisible = workspace.isStackTemplatesVisible();
        personalVisible = workspace.isStackPersonalVisible();
        mailVisible = workspace.isStackMailVisible();

        removeAllContextListItems();
        contextListBox.addItem(Main.i18n("leftpanel.label.taxonomy"), "" + UIDesktopConstants.NAVIGATOR_TAXONOMY);
        if (categoriesVisible) {
            contextListBox.addItem(Main.i18n("leftpanel.label.categories"),
                    "" + UIDesktopConstants.NAVIGATOR_CATEGORIES);
        }
        if (thesaurusVisible) {
            contextListBox.addItem(Main.i18n("leftpanel.label.thesaurus"),
                    "" + UIDesktopConstants.NAVIGATOR_THESAURUS);
        }
        if (templatesVisible) {
            contextListBox.addItem(Main.i18n("leftpanel.label.templates"),
                    "" + UIDesktopConstants.NAVIGATOR_TEMPLATES);
        }
        if (personalVisible) {
            contextListBox.addItem(Main.i18n("leftpanel.label.my.documents"),
                    "" + UIDesktopConstants.NAVIGATOR_PERSONAL);
        }
        if (mailVisible) {
            contextListBox.addItem(Main.i18n("leftpanel.label.mail"), "" + UIDesktopConstants.NAVIGATOR_MAIL);
        }

        super.show();
    }

    /**
     * Enables or disables move button
     * 
     * @param enable
     */
    public void enable(boolean enable) {
        actionButton.setEnabled(enable);
    }

    /**
     * removeAllContextListItems
     */
    private void removeAllContextListItems() {
        while (contextListBox.getItemCount() > 0) {
            contextListBox.removeItem(0);
        }
    }
}