/**
* Copyright (c) 2013-2015 by Brainwy Software Ltda, Inc. All Rights Reserved.
* Licensed under the terms of the Eclipse Public License (EPL).
* Please see the license.txt included with this distribution for details.
* Any modifications to this file must keep this entire header intact.
*/
package org.python.pydev.debug.curr_exception;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.TrayDialog;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
import org.python.pydev.shared_ui.UIConstants;
import org.python.pydev.shared_ui.dialogs.DialogMemento;
import org.python.pydev.ui.editors.TreeWithAddRemove;
/**
* @author fabioz
*/
public class EditIgnoredCaughtExceptionsDialog extends TrayDialog {
private Button okButton;
private Button cancelButton;
private HashMap<String, String> map;
private TreeWithAddRemove treeWithAddRemove;
private DialogMemento memento;
private Map<String, String> finalMap;
EditIgnoredCaughtExceptionsDialog(Shell shell, HashMap<String, String> map) {
super(shell);
this.map = map;
setHelpAvailable(false);
memento = new DialogMemento(shell, "org.python.pydev.debug.curr_exception.EditIgnoredCaughtExceptionsDialog");
}
@Override
protected void createButtonsForButtonBar(Composite parent) {
okButton = createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true);
cancelButton = createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false);
}
@Override
public boolean close() {
memento.writeSettings(getShell());
return super.close();
}
@Override
protected Point getInitialSize() {
return memento.getInitialSize(super.getInitialSize(), getShell());
}
@Override
protected Point getInitialLocation(Point initialSize) {
return memento.getInitialLocation(initialSize, super.getInitialLocation(initialSize), getShell());
}
@Override
protected Control createDialogArea(Composite parent) {
memento.readSettings();
Composite area = (Composite) super.createDialogArea(parent);
treeWithAddRemove = new TreeWithAddRemove(area, 0, map) {
@Override
protected void handleAddButtonSelected(int nButton) {
throw new RuntimeException("not implemented: no add buttons");
}
@Override
protected String getImageConstant() {
return UIConstants.PUBLIC_ATTR_ICON;
}
@Override
protected String getButtonLabel(int i) {
throw new RuntimeException("not implemented: no add buttons");
}
@Override
protected int getNumberOfAddButtons() {
return 0;
}
};
GridData data = new GridData(GridData.FILL_BOTH);
data.grabExcessHorizontalSpace = true;
data.grabExcessVerticalSpace = true;
treeWithAddRemove.setLayoutData(data);
treeWithAddRemove.fitToContents();
return area;
}
@Override
protected boolean isResizable() {
return true;
}
@Override
protected void configureShell(Shell shell) {
super.configureShell(shell);
shell.setText("Edit Ignored Thrown Exceptions");
}
@Override
protected void okPressed() {
this.finalMap = treeWithAddRemove.getTreeItemsAsMap();
super.okPressed();
}
public Map<String, String> getResult() {
return finalMap;
}
}