org.ned.server.nedadminconsole.client.dialogs.NedNewElementDialog.java Source code

Java tutorial

Introduction

Here is the source code for org.ned.server.nedadminconsole.client.dialogs.NedNewElementDialog.java

Source

/*******************************************************************************
 * Copyright (c) 2011-2012 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.dialogs;

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.NedStringGenerator;
import org.ned.server.nedadminconsole.client.callbacks.NedAddNewElementCallback;
import org.ned.server.nedadminconsole.client.callbacks.NedCheckIdCallback;
import org.ned.server.nedadminconsole.client.interfaces.NedLibraryListUpdater;
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.regexp.shared.RegExp;
import com.google.gwt.user.client.rpc.ServiceDefTarget;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.TreeItem;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.HasVerticalAlignment;

public class NedNewElementDialog extends DialogBox {

    private String type;
    private NedObject parentItem;
    private TextBox textBoxId;
    private TextBox textBoxName;
    private TreeItem parentTreeItem;
    private Label labelIdResult;
    private final String idRegExp = "^[a-zA-Z0-9]*$";

    public NedNewElementDialog(String type, NedObject parentItem, TreeItem parentTreeItem) {
        this(type, parentItem, parentTreeItem, (NedLibraryListUpdater) null);
    }

    /**
     * @wbp.parser.constructor
     */
    public NedNewElementDialog(String type, NedObject parentItem, TreeItem parentTreeItem,
            NedLibraryListUpdater libraryUpdater) {
        this.type = type;
        this.parentItem = parentItem;
        this.parentTreeItem = parentTreeItem;
        setText(NedRes.instance().newElemDlgAddNew() + " " + type);

        VerticalPanel verticalPanel = new VerticalPanel();
        verticalPanel.setSpacing(8);
        verticalPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
        setWidget(verticalPanel);
        verticalPanel.setSize("335px", "100%");

        Grid grid = new Grid(3, 3);
        verticalPanel.add(grid);
        verticalPanel.setCellWidth(grid, "25%");
        grid.setSize("100%", "100%");

        Label lblId = new Label(NedRes.instance().id() + ":");
        grid.setWidget(0, 0, lblId);
        grid.getCellFormatter().setWidth(0, 0, "");

        textBoxId = new TextBox();
        textBoxId.setMaxLength(20);
        grid.setWidget(0, 1, textBoxId);
        grid.getCellFormatter().setWidth(0, 1, "");
        textBoxId.setWidth("96%");

        Button buttonRandomize = new Button("New button");
        buttonRandomize.addClickHandler(new ClickHandlerRandomize());
        grid.setWidget(0, 2, buttonRandomize);
        buttonRandomize.setWidth("100%");
        grid.getCellFormatter().setWidth(0, 2, "40%");
        buttonRandomize.setText(NedRes.instance().newElemDlgRandomize());

        Button buttonCheck = new Button("New button");
        buttonCheck.addClickHandler(new ClickHandlerCheck());
        grid.setWidget(1, 1, buttonCheck);
        grid.getCellFormatter().setWidth(1, 1, "");
        buttonCheck.setWidth("100%");
        buttonCheck.setText(NedRes.instance().newElemDlgCheck());

        labelIdResult = new Label("");
        labelIdResult.setWordWrap(false);
        labelIdResult.setStyleName("gwt-Label-red");
        grid.setWidget(1, 2, labelIdResult);
        grid.getCellFormatter().setWidth(1, 2, "25%");
        grid.getCellFormatter().setWidth(2, 1, "");

        Label lblName = new Label(NedRes.instance().name() + ":");
        grid.setWidget(2, 0, lblName);
        grid.getCellFormatter().setWidth(2, 0, "");
        lblName.setWidth("");

        textBoxName = new TextBox();
        textBoxName.setMaxLength(20);
        grid.setWidget(2, 1, textBoxName);
        textBoxName.setWidth("96%");

        grid.getCellFormatter().setVerticalAlignment(0, 1, HasVerticalAlignment.ALIGN_BOTTOM);
        grid.getCellFormatter().setVerticalAlignment(0, 2, HasVerticalAlignment.ALIGN_BOTTOM);
        grid.getCellFormatter().setHorizontalAlignment(0, 2, HasHorizontalAlignment.ALIGN_LEFT);
        grid.getCellFormatter().setVerticalAlignment(1, 1, HasVerticalAlignment.ALIGN_TOP);
        grid.getCellFormatter().setVerticalAlignment(1, 2, HasVerticalAlignment.ALIGN_MIDDLE);
        grid.getCellFormatter().setHorizontalAlignment(0, 0, HasHorizontalAlignment.ALIGN_LEFT);
        grid.getCellFormatter().setHorizontalAlignment(2, 0, HasHorizontalAlignment.ALIGN_LEFT);

        if (type != NedConstant.TYPE_LIBRARY) {
            buttonCheck.setVisible(false);
            buttonRandomize.setVisible(false);
            lblId.setVisible(false);
            textBoxId.setVisible(false);
            labelIdResult.setVisible(false);
            grid.getRowFormatter().setVisible(0, false);
            grid.getRowFormatter().setVisible(1, false);
            grid.remove(textBoxName);
            grid.setWidget(2, 2, textBoxName);
            textBoxName.setWidth("98%");
        }

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

        Button buttonOk = new Button();
        buttonOk.addClickHandler(new ClickHandlerOk(libraryUpdater));
        horizontalPanel.add(buttonOk);
        horizontalPanel.setCellWidth(buttonOk, "50%");
        buttonOk.setText(NedRes.instance().ok());
        buttonOk.setWidth("100%");

        Button buttonCancel = new Button();
        buttonCancel.addClickHandler(new ClickHandlerCancel());
        horizontalPanel.add(buttonCancel);
        horizontalPanel.setCellWidth(buttonCancel, "50%");
        buttonCancel.setText(NedRes.instance().cancel());
        buttonCancel.setWidth("100%");

        center();
        textBoxName.setFocus(true);
    }

    private class ClickHandlerCancel implements ClickHandler {
        @Override
        public void onClick(ClickEvent event) {
            NedNewElementDialog.this.hide();
        }

    }

    private class ClickHandlerOk implements ClickHandler {
        private NedLibraryListUpdater libraryUpdater;

        public ClickHandlerOk(NedLibraryListUpdater libraryUpdater) {
            this.libraryUpdater = libraryUpdater;
        }

        @Override
        public void onClick(ClickEvent event) {
            String itemName = textBoxName.getText();
            if (itemName != null && !itemName.trim().isEmpty()) {
                NedCatalogServiceAsync service = (NedCatalogServiceAsync) GWT.create(NedCatalogService.class);

                ServiceDefTarget serviceDef = (ServiceDefTarget) service;
                serviceDef.setServiceEntryPoint("NedCatalogServlet");

                String parentId = null;
                int newItemIndex = 0;

                if (type.equals("Media Item")) {
                    type = "Undefined";
                }

                if (!type.equals("Library")) {
                    parentId = parentItem.id;
                    newItemIndex = parentItem.childes.size() + 1;
                }

                String id = textBoxId.getText();
                if (id == null || id.trim().trim().isEmpty()) {
                    id = new NedStringGenerator().nextString();
                    textBoxId.setText(id);
                }

                NedObject newObject = new NedObject(id, parentId, itemName.trim(), type, null, null, newItemIndex,
                        null, null);
                NedAddNewElementCallback serviceCallback = new NedAddNewElementCallback(NedNewElementDialog.this,
                        newObject, parentItem, parentTreeItem, libraryUpdater);
                service.addNewItem(newObject, serviceCallback);
            } else {
                NedAlert.showAlert(NedRes.instance().msgErrorEmptyName());
            }
        }
    }

    private class ClickHandlerRandomize implements ClickHandler {
        @Override
        public void onClick(ClickEvent event) {
            textBoxId.setText(new NedStringGenerator().nextString());
        }
    }

    private class ClickHandlerCheck implements ClickHandler {

        @Override
        public void onClick(ClickEvent event) {
            if (!textBoxId.getText().isEmpty()) {
                labelIdResult.setText("");
                RegExp pattern = RegExp.compile(idRegExp);
                if (!pattern.test(textBoxId.getText())) {
                    labelIdResult.setText(NedRes.instance().newElemDlgIdIllegal());
                } else {
                    NedCatalogServiceAsync service = (NedCatalogServiceAsync) GWT.create(NedCatalogService.class);
                    ServiceDefTarget serviceDef = (ServiceDefTarget) service;
                    serviceDef.setServiceEntryPoint("NedCatalogServlet");
                    NedCheckIdCallback serviceCallback = new NedCheckIdCallback(labelIdResult);
                    service.checkIdAvailable(textBoxId.getText(), serviceCallback);
                }
            } else {
                labelIdResult.setText(NedRes.instance().newElemDlgIdIsEmpty());
            }
        }

    }

}