src.com.ibm.as400.vaccess.DBCellSelector Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jt400-jdk9 Show documentation
Show all versions of jt400-jdk9 Show documentation
The Open Source version of the IBM Toolbox for Java
The newest version!
///////////////////////////////////////////////////////////////////////////////
//
// JTOpen (IBM Toolbox for Java - OSS version)
//
// Filename: DBCellSelector.java
//
// The source code contained herein is licensed under the IBM Public License
// Version 1.0, which has been approved by the Open Source Initiative.
// Copyright (C) 1997-2001 International Business Machines Corporation and
// others. All rights reserved.
//
///////////////////////////////////////////////////////////////////////////////
package com.ibm.as400.vaccess;
import javax.swing.DefaultCellEditor;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import java.awt.Color;
import java.awt.Component;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
/**
* Used to be able to select cell text in non-updatable SQLResultSetTablePanes.
* It is not intended to be a typical cell editor. It is only used for selecting cell data, not editing it.
**/
class DBCellSelector extends DefaultCellEditor
{
private static final String copyright = "Copyright (C) 1997-2001 International Business Machines Corporation and others.";
static final JTextField textField_ = new JTextField();
static final JTextArea textArea_ = new JTextArea();
static final JScrollPane scrollPane_ = new JScrollPane(textArea_);
static
{
textField_.setEditable(true); // So we get a cursor. We add a KeyAdapter that consumes alphabetic characters.
textArea_.setEditable(true);
textField_.setBackground(Color.white); // For some reason, the default in JDK 1.3 is gray? or transparent?
textArea_.setBackground(Color.white);
textArea_.setLineWrap(false);
KeyAdapter adapter = new KeyAdapter()
{
public void keyTyped(KeyEvent e)
{
if (e.getModifiers() == 0) // A typical copy/paste key should have modifiers; normal keys won't.
{
e.consume(); // Don't let the user type data into the cell.
}
}
};
textField_.addKeyListener(adapter);
textArea_.addKeyListener(adapter);
// The text in the cell scrolls automatically, so we don't need a horizontal bar.
// Plus, the cell isn't big enough to hold both the scrollbar and the text.
scrollPane_.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
// The scroll pane is only used for text areas which are only used for cells with multi-line values.
// So we always want a vertical scrollbar.
scrollPane_.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
// Don't want headers or borders, since we are in a cell and don't have extra room for them.
scrollPane_.setColumnHeader(null);
scrollPane_.setRowHeader(null);
scrollPane_.setViewportBorder(null);
}
/**
* Calls the DefaultCellEditor constructor with a JTextField.
**/
public DBCellSelector()
{
super(textField_);
}
/**
* Uses the superclass's default cell editor component unless the data value in the cell
* contains a newline, in which case we use a JTextArea inside a JScrollPane.
**/
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column)
{
// If the text is only one line, then use the regular JTextField;
// otherwise, use a JTextArea wrapped in a vertically scrollable JScrollPane.
if (value == null) value = ""; // Swing doesn't like it if the value is null.
Component c = super.getTableCellEditorComponent(table, value, isSelected, row, column);
String s = value.toString();
if (s.indexOf("\n") > -1)
{
textArea_.setText(s);
c = scrollPane_;
}
return c;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy