Interface AgnosticDialog
-
- All Known Subinterfaces:
QueriedAgnosticDialog
- All Known Implementing Classes:
AbbreviationEditor,CatalogDialog,ColourDialog,CoreUpdateDialog,CustomPaperDialog,DictionaryEditor,ImageResourceBrowser,InsertCharsDialog,InsertImageDialog,LocaleSelectionDialog,NetworkProxy,NewDocumentDialog,NewProjectDialog,ParagraphDialog,Preferences,ProjectFolderDialog,RootEditor,StyleEditor,UILibraryDialogTemplate
public interface AgnosticDialogThis interface is used byPlatformSupportto handle OK and Cancel buttonActionEvents for swappable dialogs. AnAgnosticDialogcan have the content and functionality of its "OK" and "Cancel" buttons switched so that it looks correct on platforms that order them differently. The term "dialog" is meant in a general sense. No particular implementing class is assumed.This interface allows the designer to write the appropriate code for handling "OK" (commit) and "Cancel" actions independently of the physical button they are attached to.
PlatformSupport.makeAgnosticDialog(ca.cgjennings.platform.AgnosticDialog, javax.swing.JButton, javax.swing.JButton)will add listeners so that presses on these buttons are routed to the appropriate method below regardless of button order.For a greater degree of control, you can leave the implementation of these methods empty and use the return result of
makeAgnosticDialogto perform whatever customization is required. In this case, implementing the interface simply serves as a marker that a given class has been modified to be agnostic. For control over how the contents of the two buttons are swapped, implementQueriedAgnosticDialoginstead.Almost all existing dialogs can be converted to be agnostic with a minimum of effort. The following steps are usually all that is required:
- Add an
implements AgnosticDialogto the root container class for the dialog (usually aJDialogsubclass). - Add empty implementations for
handleOKActionandhandleCancelAction. - Move the existing
ActionEventlistener code for the OK and Cancel buttons to the above methods. - Delete the original listeners and listener registration code (if using a GUI designer, delete the event bindings in the designer).
- Add a call to
PlatformSupport.makeAgnosticDialog( this, okBtn, cancelBtn )(or one of its variants) after the components are initialized but before they are shown. This will usually be in the constructor.
A typical use would look like this:
public class MyDialog extends JDialog implements AgnosticDialog { public MyDialog( ... ) { super( ... ); initComponents(); // if buttons are in OK, Cancel order PlatformSupport.makeAgnosticDialog( this, okBtn, cancelBtn ); // if buttons are in Cancel, OK order // PlatformSupport.makeAgnosticDialog( this, false, okBtn, cancelBtn ); ... } private void initComponents() { ... okBtn = new JButton( "Do Something" ); cancelBtn = new JButton( "Cancel" ); ... } public void handleOKAction( ActionEvent e ) { // do something dispose(); } public void handleCancelAction( ActionEvent e ) { dispose(); } }- Author:
- Chris Jennings
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description voidhandleCancelAction(java.awt.event.ActionEvent e)Performs whatever action is required when the Cancel button is pressed.voidhandleOKAction(java.awt.event.ActionEvent e)Performs whatever action is required when the OK button is pressed.
-
-
-
Method Detail
-
handleOKAction
void handleOKAction(java.awt.event.ActionEvent e)
Performs whatever action is required when the OK button is pressed. Called when the (possibly swapped) OK button generates an ActionEvent.- Parameters:
e- theActionEventgenerated by the button
-
handleCancelAction
void handleCancelAction(java.awt.event.ActionEvent e)
Performs whatever action is required when the Cancel button is pressed. Called when the (possibly swapped) OK button generates an ActionEvent.- Parameters:
e- theActionEventgenerated by the button
-
-