Hi, Hmm, this is a bit of a mind bender. I'm probably misunderstanding something here. . .
You have a actor uses EditorPaneFactory that has a ChangeOption button. If you double click on the actor and press the ChangeOption button in the "Edit Parameters" window, it adds choices to the entry in the Editor Pane. Then, when you hit Cancel, what do you expect to have happen? I don't think the Cancel mechanism will handle removing the new choices that were added. You would need to include this logic in your Pane. For me, hitting Cancel seems to revert the value I typed in or select from the list. Have a look at ptolemy/actor/gui/EditParametersDialog.java and see how that works. I suspect that you will need to create MoMLChangeRequests to properly get this to work. Note further that EditParametersDialog is a model dialog: <p> The dialog is modal, so that (in lieu of a proper undo mechanism) the Cancel button can properly undo any modifications that are made. This means that the statement that creates the dialog will not return until the user dismisses the dialog. The method buttonPressed() can then be called to find out whether the user clicked the Commit button or the Cancel button (or any other button specified in the constructor). Then you can access the component to determine what values were set by the user. Anyway, forgive me if I'm missing something here. _Christopher -------- Hi. I've been messing with custom EditorPanes and have come up with this really simple Actor to demonstrate what I'm up to. The Actor has a single StringParameter. The editor pane displays this value and an additional JButton. When the button is pressed two more choices are added to the StringParameter. The ChangeListener isn't being used yet in the ConfigTestEditorPane class. For some reason, the Cancel button is no longer working. I suspect the generated undo change is not being executed in the correct context. Any ideas how I can correct this? Thanks Kevin Ruland University of Kansas. package edu.tutorial; import java.awt.Component; import java.awt.Window; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JPanel; import ptolemy.actor.TypedAtomicActor; import ptolemy.actor.gui.EditorPaneFactory; import ptolemy.actor.gui.PtolemyQuery; import ptolemy.data.expr.StringParameter; import ptolemy.gui.CloseListener; import ptolemy.gui.QueryListener; import ptolemy.kernel.CompositeEntity; import ptolemy.kernel.util.IllegalActionException; import ptolemy.kernel.util.NameDuplicationException; import ptolemy.kernel.util.NamedObj; public class ConfigTest extends TypedAtomicActor { public ConfigTest(CompositeEntity container, String name) throws IllegalActionException, NameDuplicationException { super(container, name); MainValue = new StringParameter(this,"MainValue" ); new ConfigEditorPaneFactory( this, ""); } private StringParameter MainValue; private static int optionCounter = 0; private class ConfigEditorPaneFactory extends EditorPaneFactory { public ConfigEditorPaneFactory(NamedObj container, String name) throws IllegalActionException, NameDuplicationException { super(container, name); } public Component createEditorPane() { return new ConfigPane( (ConfigTest) getContainer() ); } private class ConfigPane extends JPanel implements QueryListener, C loseListener { private ConfigPane( ConfigTest container ) { parent = container; setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); query = new PtolemyQuery( parent ); query.setTextWidth(40); query.addStyledEntry( parent.MainValue ); add(query); JButton update = new JButton("ChangeOptions"); update.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { changeOptions(); } }); add( update ); } public void changed(String name) { System.out.println("QueryListener.changed: " + name); } public void windowClosed(Window window, String button) { System.out.println( "CloseListener.windowClosed"); query.windowClosed(window,button); } private ConfigTest parent; private PtolemyQuery query; private void changeOptions( ) { StringParameter p = parent.MainValue; for( int i=0; i < 2; i++ ) { p.addChoice( Integer.toString(optionCounter++) ); } } } } } -------- ---------------------------------------------------------------------------- Posted to the ptolemy-hackers mailing list. Please send administrative mail for this list to: [EMAIL PROTECTED]