Package org.apache.airavata.xbaya.gui

Source Code of org.apache.airavata.xbaya.gui.TabLabelButton

/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you 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 org.apache.airavata.xbaya.gui;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.plaf.basic.BasicButtonUI;
public class TabLabelButton extends JPanel implements ActionListener{
  private static final long serialVersionUID = 1L;
 
  private JTabbedPane tabPanel;
 
  private ActionListener closeButtonListener;
 
 
  public TabLabelButton(final JTabbedPane pane, String closeButtonTip) {
        super();
        setTabPanel(pane);
        FlowLayout layout = new FlowLayout(FlowLayout.LEFT);
        layout.setAlignment(FlowLayout.LEFT);
        layout.setVgap(0);
        layout.setHgap(0);
        setLayout(layout);
        setOpaque(false);
        JLabel label = new JLabel() {
      private static final long serialVersionUID = 1L;

      public String getText() {
                int i = pane.indexOfTabComponent(TabLabelButton.this);
                if (i != -1) {
                  TabLabelButton.this.updateUI();
                    return pane.getTitleAt(i);
                }
                return null;
            }
        };
        
        add(label);
        label.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 5));
        final JButton button = new JButton(){
      private static final long serialVersionUID = 1L;
            protected void paintComponent(Graphics g) {
                super.paintComponent(g);
                //Only if the selected tab is this tab we draw the close
                if (pane.indexOfTabComponent(TabLabelButton.this)==pane.getSelectedIndex()){
                  Graphics2D drawer = (Graphics2D) g.create();
                    if (getModel().isPressed()) {
                        drawer.translate(1, 1);
                    }
                    drawer.setStroke(new BasicStroke(2));
                  drawer.setColor(Color.GRAY);
                  if (getModel().isRollover()) {
                        drawer.setColor(new Color(200,0,0));
                    }
                  setBorderPainted(getModel().isRollover());
                    int delta = 7;
          int right = (getWidth()-1) - delta;
          int bottom = (getHeight()-1) - delta;
          drawer.drawLine(delta, delta, right, bottom);
                    drawer.drawLine(right, delta, delta, bottom);
                    drawer.dispose();
                }
            }
        };
        button.setPreferredSize(new Dimension(20, 20));
        button.setToolTipText(closeButtonTip);
        button.setUI(new BasicButtonUI());
        button.setContentAreaFilled(false);
        button.setFocusable(false);
        button.setBorder(BorderFactory.createLineBorder(Color.GRAY));
        button.setBorderPainted(false);
        button.setRolloverEnabled(true);
        button.addActionListener(this);
       
        add(button);
        setBorder(BorderFactory.createEmptyBorder(2, 0, 0, 0));
    }

  public JTabbedPane getTabPanel() {
    return tabPanel;
  }

  public void setTabPanel(JTabbedPane tabPanel) {
    this.tabPanel = tabPanel;
  }

  public ActionListener getCloseButtonListener() {
    return closeButtonListener;
  }

  public void setCloseButtonListener(ActionListener closeButtonListener) {
    this.closeButtonListener = closeButtonListener;
  }

  @Override
  public void actionPerformed(ActionEvent event) {
        if (getTabPanel().indexOfTabComponent(TabLabelButton.this)==getTabPanel().getSelectedIndex()){
          if (getCloseButtonListener()!=null){
            getCloseButtonListener().actionPerformed(event);
          }
        }else{
          getTabPanel().setSelectedIndex(getTabPanel().indexOfTabComponent(TabLabelButton.this));
        }
  }
}
TOP

Related Classes of org.apache.airavata.xbaya.gui.TabLabelButton

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.