Package com.eviware.soapui.security.ui

Source Code of com.eviware.soapui.security.ui.XPathCellRender

/*
* Copyright 2004-2014 SmartBear Software
*
* Licensed under the EUPL, Version 1.1 or - as soon as they will be approved by the European Commission - subsequent
* versions of the EUPL (the "Licence");
* You may not use this work except in compliance with the Licence.
* You may obtain a copy of the Licence at:
*
* http://ec.europa.eu/idabc/eupl
*
* Unless required by applicable law or agreed to in writing, software distributed under the Licence is
* distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the Licence for the specific language governing permissions and limitations
* under the Licence.
*/
package com.eviware.soapui.security.ui;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Cursor;
import java.awt.Dialog.ModalExclusionType;
import java.awt.Dimension;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowFocusListener;

import javax.swing.AbstractAction;
import javax.swing.AbstractCellEditor;
import javax.swing.Action;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.table.TableCellEditor;

import com.eviware.soapui.support.UISupport;
import com.eviware.soapui.support.components.JXToolBar;

@SuppressWarnings("serial")
public class XPathCellRender extends AbstractCellEditor implements TableCellEditor, MouseListener, WindowFocusListener {

    protected JPanel panel;
    JTextArea textArea;

    private JTextField textField;
    protected JFrame frame;
    private JButton resizeBtn;
    protected int mouseX;
    protected int mouseY;

    public XPathCellRender() {

        panel = new JPanel();
        panel.setLayout(new BorderLayout());
        textArea = new JTextArea(4, 5);
        textArea.setWrapStyleWord(true);

        textArea.addKeyListener(new KeyAdapter() {
            public void keyPressed(KeyEvent evt) {
                switch (evt.getKeyCode()) {
                    // case KeyEvent.VK_ENTER :
                    // textField.setText( textArea.getText() );
                    // frame.setVisible( false );
                    // break;
                    case KeyEvent.VK_ESCAPE:
                        frame.setVisible(false);
                        break;
                }
            }
        });

        panel.add(new JScrollPane(textArea), BorderLayout.CENTER);
        panel.setPreferredSize(new Dimension(200, 100));
        panel.setMinimumSize(new Dimension(200, 100));
        JXToolBar toolbar = initToolbar(UISupport.createToolbar());
        panel.add(toolbar, BorderLayout.SOUTH);

        this.frame = new JFrame();
        this.frame.addWindowFocusListener(this);
        this.frame.setContentPane(panel);
        this.frame.setAlwaysOnTop(true);
        this.frame.setModalExclusionType(ModalExclusionType.APPLICATION_EXCLUDE);
        this.frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
        this.frame.setUndecorated(true);
        textField = new JTextField();
        textField.addMouseListener(this);

    }

    /**
     * @param jxToolBar
     * @return
     */
    protected JXToolBar initToolbar(JXToolBar toolbar) {

        resizeBtn = UISupport.createToolbarButton(UISupport.createImageIcon("/icon_resize.gif"));
        resizeBtn.setCursor(new Cursor(Cursor.SE_RESIZE_CURSOR));
        resizeBtn.setContentAreaFilled(false);
        resizeBtn.setBorder(null);
        resizeBtn.setToolTipText("Drag to resize...");
        resizeBtn.addMouseMotionListener(new MouseMotionListener() {

            @Override
            public void mouseMoved(MouseEvent e) {
                // TODO Auto-generated method stub

            }

            @Override
            public void mouseDragged(MouseEvent e) {
                frame.setSize(frame.getWidth() - mouseX + e.getX(), frame.getHeight() - mouseY + e.getY());
            }
        });

        resizeBtn.addMouseListener(new MouseAdapter() {

            public void mousePressed(MouseEvent e) {
                mouseX = e.getX();
                mouseY = e.getY();
            }

            ;

        });

        toolbar.add(UISupport.createToolbarButton(new SaveXPathAction()), true);
        toolbar.add(UISupport.createToolbarButton(new CancelXPathAction()), true);
        toolbar.addGlue();
        toolbar.add(resizeBtn);
        toolbar.setFloatable(false);
        return toolbar;
    }

    private class SaveXPathAction extends AbstractAction {

        public SaveXPathAction() {
            super("Save");
            putValue(Action.SMALL_ICON, UISupport.createImageIcon("/disk_multiple.png"));
            putValue(Action.SHORT_DESCRIPTION, "Save XPath");
        }

        @Override
        public void actionPerformed(ActionEvent arg0) {
            textField.setText(textArea.getText());
            frame.setVisible(false);
        }

    }

    private class CancelXPathAction extends AbstractAction {

        public CancelXPathAction() {
            super("Cancel");
            putValue(Action.SMALL_ICON, UISupport.createImageIcon("/rest_method.gif"));
            putValue(Action.SHORT_DESCRIPTION, "Cancel Changes");
        }

        @Override
        public void actionPerformed(ActionEvent e) {
            frame.setVisible(false);
        }

    }

    @Override
    public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
        String val = (String) table.getModel().getValueAt(row, column);
        textField.setText(val);
        return textField;
    }

    @Override
    public Object getCellEditorValue() {
        return textField.getText();
    }

    @Override
    public void mouseClicked(MouseEvent e) {
        if (!frame.isVisible()) {
            textArea.setText(textField.getText().replaceAll(";", ";\n"));
            Point position = textField.getLocationOnScreen();
            frame.setBounds(position.x, position.y, frame.getWidth(), frame.getHeight());
            frame.pack();
            frame.setVisible(true);
        }
    }

    @Override
    public void mouseEntered(MouseEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void mouseExited(MouseEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void mousePressed(MouseEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void mouseReleased(MouseEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void windowGainedFocus(WindowEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void windowLostFocus(WindowEvent e) {
        frame.setVisible(false);
    }

}
TOP

Related Classes of com.eviware.soapui.security.ui.XPathCellRender

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.