Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
Clear All
new posts

    Custom Portlet Close Dialog

    1. SmartClient Version: v9.0p_2013-08-01/Enterprise Deployment (built 2013-08-01)

    2. Firefox 23.0.1

    I would like to create a custom popup when the user clicks the close icon on a portlet. So far I am having trouble with this. I tried 2 different methods. Is it possible to do this and if so how?

    First, by overriding the onCloseClick function but that is never actually called. When I run the code shown below a popup appears saying "ConfirmationMessage" but "OnCloseClick" is never shown. If I place a break point inside the overridden onCloseClick function it is never hit.

    Also it confuses me why "ConfirmationMessage" is being shown when I've set setShowCloseConfirmationMessage to false.

    Code:
    final Portlet viewPortlet = new Portlet() {
    
            @Override
            public Boolean onCloseClick() {
            	SC.say("OnCloseClick");
            	return false;
            }
    };
            
    viewPortlet.setOverflow(Overflow.HIDDEN);
            viewPortlet.setTitle(title);
    
    viewPortlet.addItem(child);
    viewPortlet.setMinWidth(100);
    viewPortlet.setShowCloseConfirmationMessage(false);
            viewPortlet.setCloseConfirmationMessage("ConfirmationMessage");
            
            return viewPortlet;
    Second, I tried to implement the addCloseClickHandler handler. If I did this I got 2 confirmation messages, the default and the one I set in the handler. The problem is that the portlet closes before the dialog in the clickHandler is shown. I would like it to wait until after the dialog is shown so that I can cancel the request, or stop it from going any further.

    Code:
    viewPortlet.addCloseClickHandler(new CloseClickHandler() {
    			
    @Override
    public void onCloseClick(CloseClickEvent event) {
    	final Dialog dialog = new Dialog();
    	dialog.setMessage("Are you sure you want to close this???");
    	dialog.setIcon("[SKIN]ask.png");
    	dialog.setButtons(new Button("OK"), new Button("Cancel"));
    	dialog.addButtonClickHandler(new ButtonClickHandler() {
    		public void onButtonClick(ButtonClickEvent event) {
    			Button clickBtn = event.getButton();
    			if (clickBtn.getTitle().equalsIgnoreCase("OK")) {
    				 viewPortlet.hide();
    			}
    			dialog.hide();
    		}
    	 });
    	dialog.draw();
    	}
    });
    Sorry for the long post hopefully this all makes sense.

    Thanks,
    Chris
Working...
X