/****************************************************************************** * Copyright (C) 2013 Fabio Zadrozny * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Fabio Zadrozny <fabiofz@gmail.com> - initial API and implementation ******************************************************************************/ package org.python.pydev.ui.dialogs; import java.util.ArrayList; import java.util.List; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Display; /** * Heler class to disable buttons on a dialog so that it doesn't get clicked accidentally (to be used on dialogs that * the user isn't expecting and that can appear while he's coding). * * @author Fabio */ public class DialogButtonEnablementHelper { private List<Button> buttons = new ArrayList<Button>(2); private boolean buttonsEnabled; public DialogButtonEnablementHelper(boolean buttonsEnabled) { this.buttonsEnabled = buttonsEnabled; } public void setButtonsEnabled(boolean b) { this.buttonsEnabled = b; for (Button bt : buttons) { bt.setEnabled(b); } } public void onCreateButton(Button button, int id) { if (id == IDialogConstants.OK_ID || id == IDialogConstants.CANCEL_ID) { buttons.add(button); } } public void onConstrainShellSize() { if (!buttonsEnabled) { setButtonsEnabled(false); Display.getCurrent().timerExec(2000, new Runnable() { @Override public void run() { setButtonsEnabled(true); } }); } } public boolean areButtonsEnabled() { return buttonsEnabled; } }