Package com.palantir.ptoss.cinch.example

Source Code of com.palantir.ptoss.cinch.example.IntroNoMVC

//   Copyright 2011 Palantir Technologies
//
//   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.palantir.ptoss.cinch.example;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.lang.reflect.InvocationTargetException;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;

import com.google.common.base.Strings;

public class IntroNoMVC {

    private final JPanel panel = new JPanel();

    private final JTextField toField = new JTextField();
    private final JTextField subjectField = new JTextField();
    private final JTextArea bodyArea = new JTextArea();
    private final JButton yellButton = new JButton("YELL!");
    private final JButton sendButton = new JButton("Send");
    private final JLabel messageLabel = new JLabel("");

    public IntroNoMVC() {
        initializeInterface();
        onUpdate();
    }

    private void initializeInterface() {
        JPanel toPanel = new JPanel(new BorderLayout());
        toPanel.add(new JLabel("To"), BorderLayout.NORTH);
        toPanel.add(toField, BorderLayout.CENTER);
        toPanel.setBorder(BorderFactory.createEmptyBorder(0, 0, 5, 0));

        JPanel subjectPanel = new JPanel(new BorderLayout());
        subjectPanel.add(new JLabel("Subject"), BorderLayout.NORTH);
        subjectPanel.add(subjectField, BorderLayout.CENTER);
        subjectPanel.setBorder(BorderFactory.createEmptyBorder(0, 0, 5, 0));

        JPanel bodyPanel = new JPanel(new BorderLayout());
        bodyPanel.add(new JLabel("Body"), BorderLayout.NORTH);
        bodyPanel.add(new JScrollPane(bodyArea), BorderLayout.CENTER);
        bodyPanel.setBorder(BorderFactory.createEmptyBorder(0, 0, 5, 0));

        JPanel topPanel = new JPanel(new BorderLayout());
        topPanel.add(toPanel, BorderLayout.NORTH);
        topPanel.add(subjectPanel, BorderLayout.SOUTH);

        JPanel bottomPanel = new JPanel(new BorderLayout());
        bottomPanel.add(messageLabel, BorderLayout.WEST);
        JPanel buttonPanel = new JPanel();
        buttonPanel.add(yellButton);
        buttonPanel.add(sendButton);
        bottomPanel.add(buttonPanel, BorderLayout.EAST);

        bodyArea.setPreferredSize(new Dimension(400, 200));

        panel.setLayout(new BorderLayout());
        panel.add(topPanel, BorderLayout.NORTH);
        panel.add(bodyPanel, BorderLayout.CENTER);
        panel.add(bottomPanel, BorderLayout.SOUTH);

        panel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));

        wireUi();
    }

    private void wireUi() {
        sendButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String content = "[to=" + toField.getText() + ", subject=" + subjectField.getText() + ", body=" + bodyArea.getText() + "]";
                System.out.println("Send " + content);
            }
        });

        yellButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                bodyArea.setText(bodyArea.getText().toUpperCase());
            }
        });

        DocumentListener enableTracker = new DocumentListener() {
            public void changedUpdate(DocumentEvent e) {
                onUpdate();
            }

            public void insertUpdate(DocumentEvent e) {
                onUpdate();
            }

            public void removeUpdate(DocumentEvent e) {
                onUpdate();
            }
        };
        toField.getDocument().addDocumentListener(enableTracker);
        subjectField.getDocument().addDocumentListener(enableTracker);
        bodyArea.getDocument().addDocumentListener(enableTracker);
    }

    private void onUpdate() {
        sendButton.setEnabled(isReady());
        messageLabel.setText(getCurrentMessage());
    }

    public String getCurrentMessage() {
        if (Strings.isNullOrEmpty(toField.getText())) {
            return "Fill out 'To' field.";
        }
        if (Strings.isNullOrEmpty(subjectField.getText())) {
            return "Fill out 'Subject' field.";
        }
        if (Strings.isNullOrEmpty(bodyArea.getText())) {
            return "Fill out 'Body'.";
        }
        return "Ready to send.";
    }

    public boolean isReady() {
        return !Strings.isNullOrEmpty(toField.getText()) && !Strings.isNullOrEmpty(subjectField.getText()) && !Strings.isNullOrEmpty(bodyArea.getText());
    }

    public JComponent getDisplayComponent() {
        return panel;
    }

    public static void main(String[] args) throws InterruptedException, InvocationTargetException {
        EventQueue.invokeAndWait(new Runnable() {
            public void run() {
                IntroNoMVC example = new IntroNoMVC();
                JFrame frame = Examples.getFrameFor("No-MVC Email Example", example.panel);
                frame.pack();
                frame.setVisible(true);
            }
        });
    }
}
TOP

Related Classes of com.palantir.ptoss.cinch.example.IntroNoMVC

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.