com.ibm.as400.vaccess.IFSEditAction Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jt400 Show documentation
Show all versions of jt400 Show documentation
The Open Source version of the IBM Toolbox for Java
The newest version!
///////////////////////////////////////////////////////////////////////////////
//
// JTOpen (IBM Toolbox for Java - OSS version)
//
// Filename: IFSEditAction.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-2000 International Business Machines Corporation and
// others. All rights reserved.
//
///////////////////////////////////////////////////////////////////////////////
package com.ibm.as400.vaccess;
import com.ibm.as400.access.AS400;
import com.ibm.as400.access.IFSFile;
import com.ibm.as400.access.FileEvent;
import com.ibm.as400.access.FileListener;
import com.ibm.as400.access.Trace;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
/**
The IFSEditAction class represents the action of editing or
viewing an IFS file.
**/
class IFSEditAction
implements VAction
{
private static final String copyright = "Copyright (C) 1997-2000 International Business Machines Corporation and others.";
// MRI.
private static final String copyText_ = ResourceLoader.getText ("MENU_COPY");
private static final String cutText_ = ResourceLoader.getText ("MENU_CUT");
private static final String editActionText_ = ResourceLoader.getText ("ACTION_EDIT");
private static final String editText_ = ResourceLoader.getText ("MENU_EDIT");
private static final String exitText_ = ResourceLoader.getText ("MENU_EXIT");
private static final String fileText_ = ResourceLoader.getText ("MENU_FILE");
private static final String pasteText_ = ResourceLoader.getText ("MENU_PASTE");
private static final String saveConfirmText_ = ResourceLoader.getText ("DLG_CONFIRM_SAVE");
private static final String saveConfirmTitle_ = ResourceLoader.getText ("DLG_CONFIRM_SAVE_TITLE");
private static final String saveText_ = ResourceLoader.getText ("MENU_SAVE");
private static final String selectAllText_ = ResourceLoader.getText ("MENU_SELECT_ALL");
private static final String viewActionText_ = ResourceLoader.getText ("ACTION_VIEW");
// Private data.
private boolean allowChanges_ = true;
private boolean enabled_ = true;
private IFSFile file_ = null;
private VObject object_ = null;
// Event support.
private ErrorEventSupport errorEventSupport_ = new ErrorEventSupport (this);
private VObjectEventSupport objectEventSupport_ = new VObjectEventSupport (this);
private WorkingEventSupport workingEventSupport_ = new WorkingEventSupport (this);
/**
Constructs an IFSEditAction object.
@param object The object.
@param file The file.
@param allowChanges true if changes are allowed, false otherwise.
**/
public IFSEditAction (VObject object,
IFSFile file,
boolean allowChanges)
{
object_ = object;
file_ = file;
allowChanges_ = allowChanges;
}
/**
Adds an error listener.
@param listener The listener.
**/
public void addErrorListener (ErrorListener listener)
{
errorEventSupport_.addErrorListener (listener);
}
/**
Adds a VObjectListener.
@param listener The listener.
**/
public void addVObjectListener (VObjectListener listener)
{
objectEventSupport_.addVObjectListener (listener);
}
/**
Adds a working listener.
@param listener The listener.
**/
public void addWorkingListener (WorkingListener listener)
{
workingEventSupport_.addWorkingListener (listener);
}
/**
Cleans up before an edit session is done. If the document has
been modified, this will the prompt the user for a save.
@param document The document.
@param frame The frame.
@param allowCancel true to allow cancel, false otherwise.
**/
void exit (IFSTextFileDocument document,
JFrame frame,
boolean allowCancel) // Private.
{
boolean cancelled = false;
if (document.isModified ()) {
int optionType = allowCancel ? JOptionPane.YES_NO_CANCEL_OPTION
: JOptionPane.YES_NO_OPTION;
int response = JOptionPane.showConfirmDialog (frame,
saveConfirmText_, saveConfirmTitle_, optionType);
switch (response) {
case JOptionPane.YES_OPTION:
save (document);
break;
case JOptionPane.NO_OPTION:
default:
break;
case JOptionPane.CANCEL_OPTION:
cancelled = true;
break;
}
}
if (cancelled == false) {
// Make the frame go away.
frame.setVisible (false);
}
}
/**
Returns the localized text for the action.
@return The text.
**/
public String getText ()
{
return allowChanges_ ? editActionText_ : viewActionText_;
}
/**
Indicates if the action is enabled.
@return true if the action is enabled, false otherwise.
**/
public boolean isEnabled ()
{
return enabled_;
}
/**
Performs the action.
@param context The action context.
**/
public void perform (VActionContext context)
{
if (Trace.isTraceOn()) {
if (allowChanges_)
Trace.log (Trace.INFORMATION, "Editing file ["
+ file_.getName () + "].");
else
Trace.log (Trace.INFORMATION, "Viewing file ["
+ file_.getName () + "].");
}
// Create the pieces.
IFSTextFileDocument document = new IFSTextFileDocument (file_);
document.load ();
JTextPane textPane = new JTextPane (document);
textPane.setEditable (allowChanges_);
// @A1D textPane.setPreferredSize (new java.awt.Dimension (400, 400));
document.addWorkingListener (new WorkingCursorAdapter (textPane));
JScrollPane scrollPane = new JScrollPane (textPane);
scrollPane.setHorizontalScrollBarPolicy (JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
scrollPane.setVerticalScrollBarPolicy (JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
// Create the window, part 1.
JFrame frame = new JFrame (file_.getPath ());
frame.getRootPane ().setPreferredSize (new java.awt.Dimension (400, 400)); // @A1A
// Create the menu bar.
JMenuBar menuBar = new JMenuBar();
JMenu menu;
JMenuItem menuItem;
final IFSTextFileDocument document2 = document;
final JFrame frame2 = frame;
final JTextPane textPane2 = textPane;
// Create the file menu.
menu = new JMenu (fileText_);
menuItem = new JMenuItem (saveText_);
menuItem.addActionListener (new ActionListener () {
public void actionPerformed (ActionEvent event) { save (document2); }
});
menuItem.setEnabled (allowChanges_);
menu.add (menuItem);
menu.addSeparator ();
menuItem = new JMenuItem (exitText_);
menuItem.addActionListener (new ActionListener () {
public void actionPerformed (ActionEvent event) { exit (document2, frame2, true); }
});
menu.add (menuItem);
menuBar.add (menu);
// Create the edit menu.
menu = new JMenu (editText_);
menuItem = new JMenuItem (cutText_);
menuItem.addActionListener (new ActionListener () {
public void actionPerformed (ActionEvent event) { textPane2.cut (); }
});
menuItem.setEnabled (allowChanges_);
menu.add (menuItem);
menuItem = new JMenuItem (copyText_);
menuItem.addActionListener (new ActionListener () {
public void actionPerformed (ActionEvent event) { textPane2.copy (); }
});
menuItem.setEnabled (true);
menu.add (menuItem);
menuItem = new JMenuItem (pasteText_);
menuItem.addActionListener (new ActionListener () {
public void actionPerformed (ActionEvent event) { textPane2.paste (); }
});
menuItem.setEnabled (allowChanges_);
menu.add (menuItem);
menu.addSeparator ();
menuItem = new JMenuItem (selectAllText_);
menuItem.addActionListener (new ActionListener () {
public void actionPerformed (ActionEvent event) { textPane2.selectAll (); }
});
menuItem.setEnabled (true);
menu.add (menuItem);
menuBar.add (menu);
// Create the window, part 2.
frame.addWindowListener (new WindowAdapter () {
public void windowClosing (WindowEvent event) { exit (document2, frame2, false); }
});
frame.getRootPane ().setJMenuBar (menuBar); // @C0C
frame.getContentPane ().setLayout (new BorderLayout ());
frame.getContentPane ().add ("Center", scrollPane);
frame.pack ();
frame.show ();
}
/**
Removes an error listener.
@param listener The listener.
**/
public void removeErrorListener (ErrorListener listener)
{
errorEventSupport_.removeErrorListener (listener);
}
/**
Removes a VObjectListener.
@param listener The listener.
**/
public void removeVObjectListener (VObjectListener listener)
{
objectEventSupport_.removeVObjectListener (listener);
}
/**
Removes a working listener.
@param listener The listener.
**/
public void removeWorkingListener (WorkingListener listener)
{
workingEventSupport_.removeWorkingListener (listener);
}
/**
Saves the file.
@param document The document.
**/
void save (IFSTextFileDocument document) // Private.
{
document.save ();
object_.load ();
objectEventSupport_.fireObjectChanged (object_);
}
/**
Sets the enabled state of the action.
@param enabled true if the action is enabled, false otherwise.
**/
public void setEnabled (boolean enabled)
{
enabled_ = enabled;
}
/**
Returns the text for the action.
@return The text.
**/
public String toString ()
{
return getText ();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy