Package com.eviware.soapui.ui

Source Code of com.eviware.soapui.ui.JDesktopPanelsList

/*
*  soapUI, copyright (C) 2004-2011 eviware.com
*
*  soapUI is free software; you can redistribute it and/or modify it under the
*  terms of version 2.1 of the GNU Lesser General Public License as published by
*  the Free Software Foundation.
*
*  soapUI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
*  even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*  See the GNU Lesser General Public License for more details at gnu.org.
*/

package com.eviware.soapui.ui;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.ArrayList;
import java.util.List;

import javax.swing.BorderFactory;
import javax.swing.DefaultListCellRenderer;
import javax.swing.DefaultListModel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;

import com.eviware.soapui.ui.desktop.DesktopListener;
import com.eviware.soapui.ui.desktop.DesktopPanel;
import com.eviware.soapui.ui.desktop.SoapUIDesktop;

/**
* List for displaying current DesktopPanels
*
* @author Ole.Matzura
*/

public class JDesktopPanelsList extends JPanel
{
  private DefaultListModel desktopPanels;
  private JList desktopPanelsList;
  private SoapUIDesktop desktop;
  private DesktopPanelPropertyChangeListener desktopPanelPropertyListener = new DesktopPanelPropertyChangeListener();
  private InternalDesktopListener desktopListener = new InternalDesktopListener();

  public JDesktopPanelsList( SoapUIDesktop desktop )
  {
    super( new BorderLayout() );
    setDesktop( desktop );

    desktopPanels = new DefaultListModel();
    desktopPanelsList = new JList( desktopPanels );
    desktopPanelsList.setCellRenderer( new DesktopItemsCellRenderer() );
    desktopPanelsList.setToolTipText( "Open windows" );
    desktopPanelsList.addMouseListener( new MouseAdapter()
    {
      public void mouseClicked( MouseEvent e )
      {
        if( e.getClickCount() < 2 )
          return;

        JDesktopPanelsList.this.desktop.showDesktopPanel( ( DesktopPanel )desktopPanelsList.getSelectedValue() );
      }
    } );

    add( new JScrollPane( desktopPanelsList ), BorderLayout.CENTER );
  }

  private class DesktopPanelPropertyChangeListener implements PropertyChangeListener
  {
    public void propertyChange( PropertyChangeEvent evt )
    {
      DesktopPanel desktopPanel = ( DesktopPanel )evt.getSource();
      int ix = desktopPanels.indexOf( desktopPanel );
      if( ix >= 0 )
        desktopPanels.set( ix, desktopPanel );
    }
  }

  private static class DesktopItemsCellRenderer extends DefaultListCellRenderer
  {
    public Component getListCellRendererComponent( JList list, Object value, int index, boolean isSelected,
        boolean cellHasFocus )
    {
      super.getListCellRendererComponent( list, value, index, isSelected, cellHasFocus );

      DesktopPanel desktopPanel = ( DesktopPanel )value;
      String title = desktopPanel.getTitle();
      setText( title );
      setToolTipText( desktopPanel.getDescription() );
      setIcon( desktopPanel.getIcon() );

      setBorder( BorderFactory.createCompoundBorder( BorderFactory.createEmptyBorder( 2, 2, 2, 2 ), getBorder() ) );

      return this;
    }
  }

  public List<DesktopPanel> getDesktopPanels()
  {
    List<DesktopPanel> result = new ArrayList<DesktopPanel>();

    for( int c = 0; c < desktopPanels.getSize(); c++ )
      result.add( ( DesktopPanel )desktopPanels.get( c ) );

    return result;
  }

  private class InternalDesktopListener implements DesktopListener
  {
    public void desktopPanelSelected( DesktopPanel desktopPanel )
    {
      desktopPanelsList.setSelectedValue( desktopPanel, false );
    }

    public void desktopPanelCreated( DesktopPanel desktopPanel )
    {
      desktopPanels.addElement( desktopPanel );
      desktopPanelsList.setSelectedValue( desktopPanel, false );

      desktopPanel.addPropertyChangeListener( desktopPanelPropertyListener );
    }

    public void desktopPanelClosed( DesktopPanel desktopPanel )
    {
      desktopPanels.removeElement( desktopPanel );
      desktopPanel.removePropertyChangeListener( desktopPanelPropertyListener );
    }
  }

  public void setDesktop( SoapUIDesktop newDesktop )
  {
    if( desktop != null )
    {
      desktop.removeDesktopListener( desktopListener );

      while( desktopPanels.size() > 0 )
      {
        DesktopPanel desktopPanel = ( DesktopPanel )desktopPanels.getElementAt( 0 );
        desktopPanel.removePropertyChangeListener( desktopPanelPropertyListener );
        desktopPanels.remove( 0 );
      }

    }

    desktop = newDesktop;

    desktop.addDesktopListener( desktopListener );

    for( DesktopPanel desktopPanel : desktop.getDesktopPanels() )
    {
      desktopPanel.addPropertyChangeListener( desktopPanelPropertyListener );
      desktopPanels.addElement( desktopPanel );
    }
  }

  public JList getDesktopPanelsList()
  {
    return desktopPanelsList;
  }

  public int getItemsCount()
  {
    return desktopPanels.size();
  }
}
TOP

Related Classes of com.eviware.soapui.ui.JDesktopPanelsList

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.