Results 1 to 5 of 5

Thread: How to ask confirmation to close the view?

  1. #1
    Join Date
    Apr 2006
    Location
    Joinville, Brazil
    Posts
    12

    Default How to ask confirmation to close the view?

    Hi!

    I am using the views in a MDI way, where the views appear as JInternalFrames.

    I need to let the user decide if he really wants to close the view when the "X" button of the view (JInternalFrame) is pressed, by showing a message with JOptionPane.

    Any hints?

    Thanks!

    Charles

  2. #2
    Join Date
    Jun 2005
    Location
    Lyon (france)
    Posts
    24

    Default

    Use a JInternalFrame with a registered VetoableChangeListener implemented like this:

    Code:
    public void vetoableChange(PropertyChangeEvent pEvt) throws PropertyVetoException
    {
       if (JInternalFrame.IS_CLOSED_PROPERTY.equals(pEvt.getPropertyName()) && Boolean.TRUE.equals(pEvt.getNewValue()))
    	{
    	     int ret = JOptionPane.showConfirmDialog(mInternalFrame, "Do you confirm ?", "confirm", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
    	     if (ret == JOptionPane.NO_OPTION)
    	     {
    		 throw new PropertyVetoException("", pEvt)
                 }
            }
    }

  3. #3
    Join Date
    Apr 2006
    Location
    Joinville, Brazil
    Posts
    12

    Smile Another way...

    Thanks!

    I also found another way to do it:

    Code:
    internalFrame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
    internalFrame.addInternalFrameListener(new InternalFrameAdapter() {
    
          public void internalFrameClosing(InternalFrameEvent e) {
                int result = JOptionPane.showConfirmDialog(internalFrame, "Do you confirm ?",
                            "Confirm", JOptionPane.YES_NO_OPTION);
    
                if (result == JOptionPane.YES_OPTION) {
                    internalFrame.dispose();
                }
            }
    });

  4. #4
    Join Date
    Aug 2005
    Location
    London (the English one!)
    Posts
    378

    Default

    But this seems to point to an "issue" in Spring RC.
    By issue, I mean the lack of support for this and the inability to pass the event to the view that has the model to detect whether or not it should be removed...

    Your solution require a change in Spring RC, in DesktopPageComponentPane from the mdi package I believe. It would be nice if the Component Pane could call a method on the pagecomponent to say "about to close" and have the ability to override it.

    I have raised this on JIRA
    http://opensource.atlassian.com/proj...browse/RCP-414

    Thanks

    Benoit

  5. #5
    Join Date
    Sep 2004
    Location
    Ghent, Belgium
    Posts
    224

    Default

    This has been fixed.

    You can override the "boolean canClose()" method in your view, and return true or false. If you return false, the view will stay open.

    Peter

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •