org.ned.server.nedadminconsole.client.widgets.NedLibrarySelectorWidget.java Source code

Java tutorial

Introduction

Here is the source code for org.ned.server.nedadminconsole.client.widgets.NedLibrarySelectorWidget.java

Source

/*******************************************************************************
* Copyright (c) 2011 Nokia Corporation
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Comarch team - initial API and implementation
*******************************************************************************/
package org.ned.server.nedadminconsole.client.widgets;

import java.util.List;

import org.ned.server.nedadminconsole.client.NedCatalogService;
import org.ned.server.nedadminconsole.client.NedCatalogServiceAsync;
import org.ned.server.nedadminconsole.client.NedConstant;
import org.ned.server.nedadminconsole.client.NedRes;
import org.ned.server.nedadminconsole.client.callbacks.NedLibraryListCallback;
import org.ned.server.nedadminconsole.client.dialogs.NedNewElementDialog;
import org.ned.server.nedadminconsole.client.interfaces.NedLibraryListUpdater;
import org.ned.server.nedadminconsole.client.interfaces.NedLibrarySelector;
import org.ned.server.nedadminconsole.shared.NedObject;

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.event.dom.client.DoubleClickEvent;
import com.google.gwt.event.dom.client.DoubleClickHandler;
import com.google.gwt.user.client.rpc.ServiceDefTarget;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.HasVerticalAlignment;

public class NedLibrarySelectorWidget extends Composite implements NedLibraryListUpdater {

    private ListBox listBox = null;
    private List<NedObject> libraries = null;
    private ClickHandlerLibrarySelect clickHandler = null;
    private NedLibrarySelector librarySelector;
    private Button buttonSelectLibrary;
    private Button buttonNewLibrary;

    public NedLibrarySelectorWidget(NedLibrarySelector librarySelector) {

        this.librarySelector = librarySelector;
        HorizontalPanel horizontalPanelMain = new HorizontalPanel();
        horizontalPanelMain.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
        initWidget(horizontalPanelMain);
        horizontalPanelMain.setSize("100%", "100%");

        VerticalPanel verticalPanel = new VerticalPanel();
        verticalPanel.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);
        verticalPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
        verticalPanel.setSpacing(8);
        horizontalPanelMain.add(verticalPanel);
        horizontalPanelMain.setCellWidth(verticalPanel, "95%");
        verticalPanel.setSize("95%", "398px");

        Label labelTitle = new Label(NedRes.instance().libDlgChooseLibrary() + ":");
        labelTitle.setStyleName("gwt-Label-element");
        verticalPanel.add(labelTitle);
        verticalPanel.setCellVerticalAlignment(labelTitle, HasVerticalAlignment.ALIGN_MIDDLE);
        labelTitle.setWidth("100%");

        listBox = new ListBox();
        listBox.setVisibleItemCount(10);
        listBox.setName(NedRes.instance().libDlgSelectLibrary());
        verticalPanel.add(listBox);
        verticalPanel.setCellVerticalAlignment(listBox, HasVerticalAlignment.ALIGN_MIDDLE);
        listBox.setSize("100%", "307px");

        HorizontalPanel horizontalPanel = new HorizontalPanel();
        verticalPanel.add(horizontalPanel);
        verticalPanel.setCellVerticalAlignment(horizontalPanel, HasVerticalAlignment.ALIGN_MIDDLE);
        horizontalPanel.setWidth("100%");
        verticalPanel.setCellWidth(horizontalPanel, "100%");

        buttonSelectLibrary = new Button();
        buttonSelectLibrary.setEnabled(false);
        horizontalPanel.add(buttonSelectLibrary);
        horizontalPanel.setCellWidth(buttonSelectLibrary, "50%");
        buttonSelectLibrary.setText(NedRes.instance().select());
        buttonSelectLibrary.setWidth("100%");

        buttonNewLibrary = new Button();
        buttonNewLibrary.setEnabled(false);
        horizontalPanel.add(buttonNewLibrary);
        horizontalPanel.setCellWidth(buttonNewLibrary, "50%");
        buttonNewLibrary.setText(NedRes.instance().libDlgNewLibrary());
        buttonNewLibrary.setWidth("100%");
        buttonNewLibrary.addClickHandler(new ClickHandlerNewLibrary());

        listBox.addItem(NedRes.instance().libDlgLoading());
        listBox.setEnabled(false);
    }

    public void loadLibraryList(List<NedObject> libraries) {
        this.libraries = libraries;
        listBox.clear();
        for (int i = 0; i < libraries.size(); i++) {
            listBox.addItem(libraries.get(i).name, libraries.get(i).id);
        }
        buttonNewLibrary.setEnabled(true);
        buttonSelectLibrary.setEnabled(true);
        listBox.setEnabled(true);
    }

    protected void onLoad() {
        if (clickHandler == null) {
            clickHandler = new ClickHandlerLibrarySelect();
            buttonSelectLibrary.addClickHandler(clickHandler);
            listBox.addDoubleClickHandler(clickHandler);
        }
        if (libraries == null) {
            NedCatalogServiceAsync service = (NedCatalogServiceAsync) GWT.create(NedCatalogService.class);
            ServiceDefTarget serviceDef = (ServiceDefTarget) service;
            serviceDef.setServiceEntryPoint("NedCatalogServlet");
            NedLibraryListCallback serviceCallback = new NedLibraryListCallback(this);
            service.getLibraryList(serviceCallback);
        }

    }

    protected void onUnload() {
        clickHandler = null;
    }

    private class ClickHandlerLibrarySelect implements DoubleClickHandler, ClickHandler {

        private ClickHandlerLibrarySelect() {
        }

        @Override
        public void onClick(ClickEvent event) {
            handleLibrarySelect();

        }

        @Override
        public void onDoubleClick(DoubleClickEvent event) {
            handleLibrarySelect();

        }

        private void handleLibrarySelect() {
            librarySelector.selectLibrary(libraries.get(listBox.getSelectedIndex()));
        }

    }

    private class ClickHandlerNewLibrary implements ClickHandler {

        @Override
        public void onClick(ClickEvent event) {
            new NedNewElementDialog(NedConstant.TYPE_LIBRARY, null, null, NedLibrarySelectorWidget.this).show();

        }
    }

    @Override
    public void addNewLibrary(NedObject library) {
        libraries.add(library);
        listBox.addItem(library.name, library.id);
    }

    public void removeLibrary(NedObject library) {
        for (int i = 0; i < listBox.getItemCount(); i++) {
            if (listBox.getValue(i).equals(library.id)) {
                listBox.removeItem(i);
                libraries.remove(i);
                if (listBox.getSelectedIndex() > -1) {
                    listBox.setItemSelected(listBox.getSelectedIndex(), false);
                }
                return;
            }
        }

    }
}