mirror of
https://github.com/JFormDesigner/FlatLaf.git
synced 2026-02-14 07:47:12 -06:00
UI defaults inspector: support copy key/value to clipboard
This commit is contained in:
@@ -9,8 +9,10 @@ FlatLaf Change Log
|
|||||||
buttons.
|
buttons.
|
||||||
- TextComponent: Clip placeholder text if it does not fit into visible area. (PR
|
- TextComponent: Clip placeholder text if it does not fit into visible area. (PR
|
||||||
#229)
|
#229)
|
||||||
- Extras: Support embedding UI defaults inspector into any window (see
|
- Extras: UI defaults inspector:
|
||||||
`FlatUIDefaultsInspector.createInspectorPanel()`.
|
- Support embedding UI defaults inspector panel into any window. See
|
||||||
|
`FlatUIDefaultsInspector.createInspectorPanel()`.
|
||||||
|
- Copy selected keys and values into clipboard via context menu.
|
||||||
|
|
||||||
#### Fixed bugs
|
#### Fixed bugs
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
package com.formdev.flatlaf.extras;
|
package com.formdev.flatlaf.extras;
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
|
import java.awt.datatransfer.StringSelection;
|
||||||
import java.awt.event.*;
|
import java.awt.event.*;
|
||||||
import java.beans.PropertyChangeEvent;
|
import java.beans.PropertyChangeEvent;
|
||||||
import java.beans.PropertyChangeListener;
|
import java.beans.PropertyChangeListener;
|
||||||
@@ -325,7 +326,7 @@ public class FlatUIDefaultsInspector
|
|||||||
return items.toArray( new Item[items.size()] );
|
return items.toArray( new Item[items.size()] );
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateWindowTitle( JFrame frame ) {
|
private static void updateWindowTitle( JFrame frame ) {
|
||||||
String title = frame.getTitle();
|
String title = frame.getTitle();
|
||||||
String sep = " - ";
|
String sep = " - ";
|
||||||
int sepIndex = title.indexOf( sep );
|
int sepIndex = title.indexOf( sep );
|
||||||
@@ -400,6 +401,49 @@ public class FlatUIDefaultsInspector
|
|||||||
return "(other)";
|
return "(other)";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void tableMousePressed( MouseEvent e ) {
|
||||||
|
if( !SwingUtilities.isRightMouseButton( e ) )
|
||||||
|
return;
|
||||||
|
|
||||||
|
int row = table.rowAtPoint( e.getPoint() );
|
||||||
|
if( row >= 0 && !table.isRowSelected( row ) )
|
||||||
|
table.setRowSelectionInterval( row, row );
|
||||||
|
}
|
||||||
|
|
||||||
|
private void copyKey() {
|
||||||
|
copyToClipboard( 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
private void copyValue() {
|
||||||
|
copyToClipboard( 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
private void copyKeyAndValue() {
|
||||||
|
copyToClipboard( -1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
private void copyToClipboard( int column ) {
|
||||||
|
int[] rows = table.getSelectedRows();
|
||||||
|
if( rows.length == 0 )
|
||||||
|
return;
|
||||||
|
|
||||||
|
StringBuilder buf = new StringBuilder();
|
||||||
|
for( int i = 0; i < rows.length; i++ ) {
|
||||||
|
if( i > 0 )
|
||||||
|
buf.append( '\n' );
|
||||||
|
|
||||||
|
if( column < 0 || column == 0 )
|
||||||
|
buf.append( table.getValueAt( rows[i], 0 ) );
|
||||||
|
if( column < 0 )
|
||||||
|
buf.append( " = " );
|
||||||
|
if( column < 0 || column == 1 )
|
||||||
|
buf.append( table.getValueAt( rows[i], 1 ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(
|
||||||
|
new StringSelection( buf.toString() ), null );
|
||||||
|
}
|
||||||
|
|
||||||
private void initComponents() {
|
private void initComponents() {
|
||||||
// JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents
|
// JFormDesigner - Component initialization - DO NOT MODIFY //GEN-BEGIN:initComponents
|
||||||
panel = new JPanel();
|
panel = new JPanel();
|
||||||
@@ -410,6 +454,10 @@ public class FlatUIDefaultsInspector
|
|||||||
valueTypeField = new JComboBox<>();
|
valueTypeField = new JComboBox<>();
|
||||||
scrollPane = new JScrollPane();
|
scrollPane = new JScrollPane();
|
||||||
table = new JTable();
|
table = new JTable();
|
||||||
|
tablePopupMenu = new JPopupMenu();
|
||||||
|
copyKeyMenuItem = new JMenuItem();
|
||||||
|
copyValueMenuItem = new JMenuItem();
|
||||||
|
copyKeyAndValueMenuItem = new JMenuItem();
|
||||||
|
|
||||||
//======== panel ========
|
//======== panel ========
|
||||||
{
|
{
|
||||||
@@ -472,10 +520,36 @@ public class FlatUIDefaultsInspector
|
|||||||
|
|
||||||
//---- table ----
|
//---- table ----
|
||||||
table.setAutoCreateRowSorter(true);
|
table.setAutoCreateRowSorter(true);
|
||||||
|
table.setComponentPopupMenu(tablePopupMenu);
|
||||||
|
table.addMouseListener(new MouseAdapter() {
|
||||||
|
@Override
|
||||||
|
public void mousePressed(MouseEvent e) {
|
||||||
|
tableMousePressed(e);
|
||||||
|
}
|
||||||
|
});
|
||||||
scrollPane.setViewportView(table);
|
scrollPane.setViewportView(table);
|
||||||
}
|
}
|
||||||
panel.add(scrollPane, BorderLayout.CENTER);
|
panel.add(scrollPane, BorderLayout.CENTER);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//======== tablePopupMenu ========
|
||||||
|
{
|
||||||
|
|
||||||
|
//---- copyKeyMenuItem ----
|
||||||
|
copyKeyMenuItem.setText("Copy Key");
|
||||||
|
copyKeyMenuItem.addActionListener(e -> copyKey());
|
||||||
|
tablePopupMenu.add(copyKeyMenuItem);
|
||||||
|
|
||||||
|
//---- copyValueMenuItem ----
|
||||||
|
copyValueMenuItem.setText("Copy Value");
|
||||||
|
copyValueMenuItem.addActionListener(e -> copyValue());
|
||||||
|
tablePopupMenu.add(copyValueMenuItem);
|
||||||
|
|
||||||
|
//---- copyKeyAndValueMenuItem ----
|
||||||
|
copyKeyAndValueMenuItem.setText("Copy Key and Value");
|
||||||
|
copyKeyAndValueMenuItem.addActionListener(e -> copyKeyAndValue());
|
||||||
|
tablePopupMenu.add(copyKeyAndValueMenuItem);
|
||||||
|
}
|
||||||
// JFormDesigner - End of component initialization //GEN-END:initComponents
|
// JFormDesigner - End of component initialization //GEN-END:initComponents
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -488,6 +562,10 @@ public class FlatUIDefaultsInspector
|
|||||||
private JComboBox<String> valueTypeField;
|
private JComboBox<String> valueTypeField;
|
||||||
private JScrollPane scrollPane;
|
private JScrollPane scrollPane;
|
||||||
private JTable table;
|
private JTable table;
|
||||||
|
private JPopupMenu tablePopupMenu;
|
||||||
|
private JMenuItem copyKeyMenuItem;
|
||||||
|
private JMenuItem copyValueMenuItem;
|
||||||
|
private JMenuItem copyKeyAndValueMenuItem;
|
||||||
// JFormDesigner - End of variables declaration //GEN-END:variables
|
// JFormDesigner - End of variables declaration //GEN-END:variables
|
||||||
|
|
||||||
//---- class Item ---------------------------------------------------------
|
//---- class Item ---------------------------------------------------------
|
||||||
|
|||||||
@@ -66,6 +66,8 @@ new FormModel {
|
|||||||
add( new FormComponent( "javax.swing.JTable" ) {
|
add( new FormComponent( "javax.swing.JTable" ) {
|
||||||
name: "table"
|
name: "table"
|
||||||
"autoCreateRowSorter": true
|
"autoCreateRowSorter": true
|
||||||
|
"componentPopupMenu": new FormReference( "tablePopupMenu" )
|
||||||
|
addEvent( new FormEvent( "java.awt.event.MouseListener", "mousePressed", "tableMousePressed", true ) )
|
||||||
} )
|
} )
|
||||||
}, new FormLayoutConstraints( class java.lang.String ) {
|
}, new FormLayoutConstraints( class java.lang.String ) {
|
||||||
"value": "Center"
|
"value": "Center"
|
||||||
@@ -74,5 +76,25 @@ new FormModel {
|
|||||||
"location": new java.awt.Point( 0, 0 )
|
"location": new java.awt.Point( 0, 0 )
|
||||||
"size": new java.awt.Dimension( 400, 300 )
|
"size": new java.awt.Dimension( 400, 300 )
|
||||||
} )
|
} )
|
||||||
|
add( new FormContainer( "javax.swing.JPopupMenu", new FormLayoutManager( class javax.swing.JPopupMenu ) ) {
|
||||||
|
name: "tablePopupMenu"
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "copyKeyMenuItem"
|
||||||
|
"text": "Copy Key"
|
||||||
|
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "copyKey", false ) )
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "copyValueMenuItem"
|
||||||
|
"text": "Copy Value"
|
||||||
|
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "copyValue", false ) )
|
||||||
|
} )
|
||||||
|
add( new FormComponent( "javax.swing.JMenuItem" ) {
|
||||||
|
name: "copyKeyAndValueMenuItem"
|
||||||
|
"text": "Copy Key and Value"
|
||||||
|
addEvent( new FormEvent( "java.awt.event.ActionListener", "actionPerformed", "copyKeyAndValue", false ) )
|
||||||
|
} )
|
||||||
|
}, new FormLayoutConstraints( null ) {
|
||||||
|
"location": new java.awt.Point( 0, 370 )
|
||||||
|
} )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user