|
What this is
Other links
The source code
/*
* 18:55:56 20/01/00
*
* HyperTyperHotkey.java - create a fast-key from the selected text
* Copyright (C) 2000 Romain Guy, Matt Albrecht
* powerteam@chez.com
* www.chez.com/powerteam
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
import org.jext.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import javax.swing.*;
/**
* Creates a fast-key sequence, using the selected text as the
* expanded part, if given.
*/
public class HyperTyperHotkey extends MenuAction
{
protected static final String PROP_NAME = HyperTyperPlugin.PROP_NAME +
".hotkey";
protected static final String PROP_TITLE = PROP_NAME +
".dialog.title";
protected static final String PROP_EXPANDED_LABEL = PROP_NAME +
".dialog.expanded_label";
protected static final String PROP_ENTRY_FIELD = PROP_NAME +
".dialog.entry_field";
protected static final String PROP_USE_TRANSIENT = PROP_NAME +
".dialog.transient_label";
protected static final String PROP_USE_PERSISTENT = PROP_NAME +
".dialog.persistent_label";
protected static final String TRANS = "trans";
protected static final String PERSIS = "persis";
private HyperTyperMapping htMap;
// delay initialization until necessary
private JTextArea expandedArea;
private JPanel fullPanel;
private JScrollPane scrollArea;
private ButtonGroup whichIsSelected;
public HyperTyperHotkey( HyperTyperMapping htm )
{
super( PROP_NAME );
this.htMap = htm;
}
public void actionPerformed( ActionEvent evt )
{
// Get the selected text
JextTextArea jta = getTextArea( evt );
// lazy-load components
if (this.fullPanel == null)
{
this.expandedArea = new JTextArea( 6, 30 );
// use the same font as the editor
int size = 0;
try
{
size = Integer.parseInt( HyperTyperObjectManager.getProperty(
"editor.fontSize") );
}
catch (NumberFormatException nfe) { size = 12; }
Font f = new Font( HyperTyperObjectManager.getProperty(
"editor.font"), Font.PLAIN, size );
this.expandedArea.setFont( f );
this.fullPanel = new JPanel( new BorderLayout() );
this.fullPanel.add( "North", new JLabel(
HyperTyperObjectManager.getProperty( PROP_EXPANDED_LABEL ) ) );
this.scrollArea = new JScrollPane( this.expandedArea,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED );
this.fullPanel.add( "Center", this.scrollArea );
JRadioButton useTransient = new JRadioButton(
HyperTyperObjectManager.getProperty( PROP_USE_TRANSIENT ));
useTransient.setActionCommand( TRANS );
useTransient.setSelected( true );
JRadioButton usePersistent = new JRadioButton(
HyperTyperObjectManager.getProperty( PROP_USE_PERSISTENT ));
usePersistent.setActionCommand( PERSIS );
this.whichIsSelected = new ButtonGroup();
this.whichIsSelected.add( useTransient );
this.whichIsSelected.add( usePersistent );
JPanel panel = new JPanel( new BorderLayout() );
JPanel buttonPanel = new JPanel( new FlowLayout() );
buttonPanel.add( usePersistent );
buttonPanel.add( useTransient );
panel.add( "Center", buttonPanel );
panel.add( "South", new JLabel(
HyperTyperObjectManager.getProperty( PROP_ENTRY_FIELD ) ) );
this.fullPanel.add( "South", panel );
}
String sel = jta.getSelectedText();
if (sel == null)
{
// now, we allow no selection!
sel = "";
}
// Add an editable field for changing the selected text
this.expandedArea.setText( sel );
this.scrollArea.setSize( this.expandedArea.getPreferredSize() );
String title = HyperTyperObjectManager.getProperty( PROP_TITLE );
JOptionPane pane = new JOptionPane( this.fullPanel,
JOptionPane.QUESTION_MESSAGE, JOptionPane.OK_CANCEL_OPTION );
pane.setWantsInput( true );
JDialog dialog = pane.createDialog( jta, title );
dialog.show();
Object selectedValue = pane.getValue();
if (selectedValue == null)
{
return; // CLOSED_OPTION;
}
//If there is not an array of option buttons:
if (selectedValue instanceof Integer)
{
int val = ((Integer)selectedValue).intValue();
if (val != JOptionPane.OK_OPTION)
{
return; // clicked cancel
}
}
String shorthand = (String)pane.getInputValue();
// get the expanded text from the dialog's text area
if (shorthand != null && shorthand.length() > 0)
{
if (isTransientSelected())
{
this.htMap.getTransientMappings().addPlainMapping(
shorthand, this.expandedArea.getText() );
}
else
{
this.htMap.getPersistentMappings().addPlainMapping(
shorthand, this.expandedArea.getText() );
}
}
}
/**
* helper method
*/
private boolean isTransientSelected()
{
return TRANS.equals(
this.whichIsSelected.getSelection().getActionCommand() );
}
}
|
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.