/*
* Copyright 2011 Mark McKay
*
* 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.
*/
/*
* TabbedPaneTitle.java
*
* Created on Jan 12, 2011, 8:06:49 AM
*/
package automenta.vivisect.swing.dock;
import java.awt.event.MouseEvent;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.TransferHandler;
/**
*
* @author kitfox
*/
public class TabbedPaneTitle extends TabbedPaneTitleMax {
final DockingRegionTabbed dockRegion;
DockingExportTransferHandler xferHandler;
MouseEvent mouseBegin;
private JComponent menuButton;
// Variables declaration - do not modify//GEN-BEGIN:variables
//private javax.swing.JButton bn_maximize;
// End of variables declaration//GEN-END:variables
/**
* Creates new form TabbedPaneTitle
*/
public TabbedPaneTitle(DockingRegionTabbed tabPanel, DockingContent content) {
super(content);
this.dockRegion = tabPanel;
//bn_maximize = new NARSwing.FAButton('\uf0de');
initComponents();
xferHandler = new DockingExportTransferHandler(tabPanel, content);
setTransferHandler(xferHandler);
// JList list = null;
// list.setDragEnabled(true);
}
// DraggingOverlayPanel panel = new DraggingOverlayPanel();
//
// public void startDrag()
// {
// JRootPane rootPane = getRootPane();
//// JComponent curGlass = (JComponent)rootPane.getGlassPane();
////
//// curGlass.setLayout(new BorderLayout());
//// curGlass.removeAll();
//// curGlass.add(new DraggingOverlayPanel(), BorderLayout.CENTER);
////
//
// rootPane.setGlassPane(panel);
// panel.setVisible(true);
//// rootPane.revalidate();
// repaint();
// }
//
// public void endDrag()
// {
// panel.setVisible(false);
// repaint();
// }
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
@SuppressWarnings(value = "unchecked")
private void initComponents() {
setOpaque(false);
setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT, 4, 0));
label_title.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
label_title.setText("jLabel1");
label_title.addMouseListener(new java.awt.event.MouseAdapter() {
@Override
public void mouseClicked(java.awt.event.MouseEvent evt) {
label_titleMouseClicked(evt);
}
@Override
public void mousePressed(java.awt.event.MouseEvent evt) {
label_titleMousePressed(evt);
}
@Override
public void mouseReleased(java.awt.event.MouseEvent evt) {
label_titleMouseReleased(evt);
}
});
label_title.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
@Override
public void mouseDragged(java.awt.event.MouseEvent evt) {
label_titleMouseDragged(evt);
}
});
bn_float.setBorderPainted(false);
bn_float.setContentAreaFilled(false);
bn_float.setMargin(new java.awt.Insets(0, 0, 0, 0));
bn_float.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent evt) {
bn_floatActionPerformed(evt);
}
});
add(label_title);
add(bn_float);
////bn_maximize.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/maximize.png"))); // NOI18N
// bn_maximize.setBorderPainted(false);
// bn_maximize.setContentAreaFilled(false);
// bn_maximize.setMargin(new java.awt.Insets(0, 0, 0, 0));
// bn_maximize.addActionListener(new java.awt.event.ActionListener() {
// @Override
// public void actionPerformed(java.awt.event.ActionEvent evt) {
// bn_maximizeActionPerformed(evt);
// }
// });
// add(bn_maximize);
// //bn_minimize.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/minimize.png"))); // NOI18N
// bn_minimize.setBorderPainted(false);
// bn_minimize.setContentAreaFilled(false);
// bn_minimize.setMargin(new java.awt.Insets(0, 0, 0, 0));
// bn_minimize.addActionListener(new java.awt.event.ActionListener() {
// @Override
// public void actionPerformed(java.awt.event.ActionEvent evt) {
// bn_minimizeActionPerformed(evt);
// }
// });
// add(bn_minimize);
//bn_close.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/close.png"))); // NOI18N
bn_close.setBorderPainted(false);
bn_close.setContentAreaFilled(false);
bn_close.setMargin(new java.awt.Insets(0, 0, 0, 0));
bn_close.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent evt) {
bn_closeActionPerformed(evt);
}
});
add(bn_close);
} // </editor-fold>//GEN-END:initComponents
private void bn_floatActionPerformed(java.awt.event.ActionEvent evt) //GEN-FIRST:event_bn_floatActionPerformed
{
//GEN-HEADEREND:event_bn_floatActionPerformed
dockRegion.floatTab(content);
} //GEN-LAST:event_bn_floatActionPerformed
private void bn_maximizeActionPerformed(java.awt.event.ActionEvent evt) //GEN-FIRST:event_bn_maximizeActionPerformed
{
//GEN-HEADEREND:event_bn_maximizeActionPerformed
dockRegion.maximizeTab(content);
} //GEN-LAST:event_bn_maximizeActionPerformed
private void bn_minimizeActionPerformed(java.awt.event.ActionEvent evt) //GEN-FIRST:event_bn_minimizeActionPerformed
{
//GEN-HEADEREND:event_bn_minimizeActionPerformed
dockRegion.minimizeTab(content);
} //GEN-LAST:event_bn_minimizeActionPerformed
private void bn_closeActionPerformed(java.awt.event.ActionEvent evt) //GEN-FIRST:event_bn_closeActionPerformed
{
//GEN-HEADEREND:event_bn_closeActionPerformed
dockRegion.removeTab(content);
} //GEN-LAST:event_bn_closeActionPerformed
private void label_titleMouseDragged(java.awt.event.MouseEvent evt) //GEN-FIRST:event_label_titleMouseDragged
{
//GEN-HEADEREND:event_label_titleMouseDragged
// System.err.println("Dragging " + evt);
//
int dx = mouseBegin.getX() - evt.getX();
int dy = mouseBegin.getY() - evt.getY();
if (mouseBegin != null && (dx * dx + dy * dy) > 16) {
//System.err.println("Export start");
//startDrag();
xferHandler.exportAsDrag(this, mouseBegin, TransferHandler.MOVE);
mouseBegin = null;
}
// getRootPane().repaint();
} //GEN-LAST:event_label_titleMouseDragged
private void label_titleMouseClicked(java.awt.event.MouseEvent evt) //GEN-FIRST:event_label_titleMouseClicked
{
//GEN-HEADEREND:event_label_titleMouseClicked
dockRegion.selectTab(content);
} //GEN-LAST:event_label_titleMouseClicked
private void label_titleMousePressed(java.awt.event.MouseEvent evt) //GEN-FIRST:event_label_titleMousePressed
{
//GEN-HEADEREND:event_label_titleMousePressed
// System.err.println("Press");
mouseBegin = evt;
} //GEN-LAST:event_label_titleMousePressed
private void label_titleMouseReleased(java.awt.event.MouseEvent evt) //GEN-FIRST:event_label_titleMouseReleased
{
//GEN-HEADEREND:event_label_titleMouseReleased
// System.err.println("Released");
//
mouseBegin = null;
// if (mouseBegin != null)
// {
//System.err.println("Export end");
// mouseBegin = null;
//// endDrag();
// }
} //GEN-LAST:event_label_titleMouseReleased
public JLabel getLabel() {
return label_title;
}
public void setLabel(String text) {
int maxLabelLength = 24;
if (text.length() > maxLabelLength)
text = text.substring(0, maxLabelLength-2) + "..";
label_title.setText(text);
}
public JComponent getMenuButton() {
return menuButton;
}
public JComponent removeMenuButton() {
remove(menuButton);
return menuButton;
}
public void setMenuButton(JComponent b) {
add(b, 0);
this.menuButton = b;
}
}