Package com.ponysdk.sample.client.page

Source Code of com.ponysdk.sample.client.page.WindowPageActivity$MyWindow$SayHelloCommand

/*
* Copyright (c) 2011 PonySDK
*  Owners:
*  Luciano Broussal  <luciano.broussal AT gmail.com>
*  Mathieu Barbier   <mathieu.barbier AT gmail.com>
*  Nicolas Ciaravola <nicolas.ciaravola.pro AT gmail.com>
*  WebSite:
*  http://code.google.com/p/pony-sdk/
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/

package com.ponysdk.sample.client.page;

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

import com.ponysdk.ui.server.basic.PButton;
import com.ponysdk.ui.server.basic.PFlexTable;
import com.ponysdk.ui.server.basic.PFlowPanel;
import com.ponysdk.ui.server.basic.PHTML;
import com.ponysdk.ui.server.basic.PLabel;
import com.ponysdk.ui.server.basic.PNotificationManager;
import com.ponysdk.ui.server.basic.PRootLayoutPanel;
import com.ponysdk.ui.server.basic.PScript;
import com.ponysdk.ui.server.basic.PTextBox;
import com.ponysdk.ui.server.basic.PVerticalPanel;
import com.ponysdk.ui.server.basic.PWindow;
import com.ponysdk.ui.server.basic.event.PClickEvent;
import com.ponysdk.ui.server.basic.event.PClickHandler;
import com.ponysdk.ui.server.basic.event.PCloseEvent;
import com.ponysdk.ui.server.basic.event.PCloseHandler;

public class WindowPageActivity extends SamplePageActivity implements PCloseHandler {

    protected List<PWindow> windows = new ArrayList<PWindow>();

    private PTextBox urlTextBox;
    private PTextBox nameTextBox;
    private PTextBox featuresTextBox;

    private PTextBox popNameTextBox;
    private PTextBox popFeaturesTextBox;

    public WindowPageActivity() {
        super("Window", "Popup");
    }

    @Override
    protected void onFirstShowPage() {
        super.onFirstShowPage();

        final PVerticalPanel verticalPanel = new PVerticalPanel();
        verticalPanel.setSpacing(10);

        // Open popup with custom URL
        final PFlexTable table = new PFlexTable();
        table.setWidget(0, 0, new PLabel("URL"));
        table.setWidget(0, 1, urlTextBox = new PTextBox("https://github.com/PonySDK/PonySDK"));
        table.setWidget(1, 0, new PLabel("Name"));
        table.setWidget(1, 1, nameTextBox = new PTextBox("PonySDK"));
        table.setWidget(2, 0, new PLabel("Features"));
        table.setWidget(2, 1, featuresTextBox = new PTextBox("width=1280,height=800,resizable,status=1"));

        final PButton open = new PButton("Open new window");
        open.addClickHandler(new PClickHandler() {

            @Override
            public void onClick(final PClickEvent event) {
                final String url = urlTextBox.getText();
                final String name = nameTextBox.getText();
                final String features = featuresTextBox.getText();
                final PWindow w = new PWindow(url, name, features);
                w.open();
            }
        });

        // Open popup that communicate with server
        final PFlexTable table2 = new PFlexTable();
        table2.setWidget(0, 0, new PLabel("Name"));
        table2.setWidget(0, 1, popNameTextBox = new PTextBox("Popup"));
        table2.setWidget(1, 0, new PLabel("Features"));
        table2.setWidget(1, 1, popFeaturesTextBox = new PTextBox("width=500,height=300,resizable"));

        final PButton open2 = new PButton("Open new window");
        open2.addClickHandler(new PClickHandler() {

            @Override
            public void onClick(final PClickEvent event) {
                final String disc = windows.size() == 0 ? "" : Integer.toString(windows.size());
                final String name = popNameTextBox.getText();
                final String features = popFeaturesTextBox.getText();
                final MyWindow window = new MyWindow(name + disc, features);
                window.open();
                window.addCloseHandler(WindowPageActivity.this);
                windows.add(window);
            }
        });

        final PButton postHello = new PButton("Post message");
        postHello.addClickHandler(new PClickHandler() {

            @Override
            public void onClick(final PClickEvent event) {
                for (final PWindow window : windows) {
                    window.acquire();
                    try {
                        PNotificationManager.showHumanizedNotification("Hello from opener");
                        window.flush();
                    } finally {
                        window.release();
                    }
                }
            }
        });

        final PButton closeAllWindow = new PButton("Close all windows");
        closeAllWindow.addClickHandler(new PClickHandler() {

            @Override
            public void onClick(final PClickEvent event) {
                for (final PWindow window : windows) {
                    window.close();
                }
            }
        });

        verticalPanel.add(new PHTML("<b>Simple popup</b>"));
        verticalPanel.add(table);
        verticalPanel.add(open);

        verticalPanel.add(new PHTML("<br><br><b>Communicating popup</b>"));
        verticalPanel.add(table2);
        verticalPanel.add(open2);
        verticalPanel.add(postHello);
        verticalPanel.add(closeAllWindow);

        examplePanel.setWidget(verticalPanel);
    }

    private static class MyWindow extends PWindow {

        private int count = 1;
        private PScript script;
        private PRootLayoutPanel rootLayoutPanel;

        public MyWindow(final String name, final String features) {
            super(null, name, features);
        }

        @Override
        protected void onLoad() {
            script = PScript.get();
            rootLayoutPanel = PRootLayoutPanel.get();

            final PFlowPanel flow = new PFlowPanel();
            final PButton addMessage = new PButton("Add message");
            addMessage.addClickHandler(new PClickHandler() {

                @Override
                public void onClick(final PClickEvent event) {
                    flow.add(new PLabel("Hello " + (count++)));
                }
            });
            final PButton clearMessage = new PButton("Clear message");
            clearMessage.addClickHandler(new PClickHandler() {

                @Override
                public void onClick(final PClickEvent event) {
                    for (int i = flow.getWidgetCount() - 1; i > 2; i--) {
                        flow.remove(i);
                    }
                }
            });
            final PButton postMessage = new PButton("Post message");
            postMessage.addClickHandler(new PClickHandler() {

                @Override
                public void onClick(final PClickEvent event) {
                    MyWindow.this.postOpenerCommand(new SayHelloCommand());
                }
            });
            final PButton execJs = new PButton("Exec javascript");
            execJs.addClickHandler(new PClickHandler() {

                @Override
                public void onClick(final PClickEvent event) {
                    script.execute("alert('from the popup');");
                }
            });
            flow.add(addMessage);
            flow.add(clearMessage);
            flow.add(postMessage);
            flow.add(execJs);
            rootLayoutPanel.add(flow);
        }

        private class SayHelloCommand implements Runnable {

            @Override
            public void run() {
                PNotificationManager.showHumanizedNotification("Hello from popup");
            }

        }

    }

    @Override
    public void onClose(final PCloseEvent closeEvent) {
        final PWindow source = (PWindow) closeEvent.getSource();
        final boolean remove = windows.remove(source);
        if (remove) {
            PNotificationManager.showTrayNotification("Window #" + source.getID() + " closed.");
        }
    }
}
TOP

Related Classes of com.ponysdk.sample.client.page.WindowPageActivity$MyWindow$SayHelloCommand

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.