/*! ****************************************************************************** * * Pentaho Data Integration * * Copyright (C) 2002-2014 by Pentaho : http://www.pentaho.com * ******************************************************************************* * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ******************************************************************************/ package org.pentaho.di.ui.core.dialog; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Shell; import org.pentaho.di.core.Const; import org.pentaho.di.core.Props; import org.pentaho.di.core.gui.OverwritePrompter; import org.pentaho.di.i18n.BaseMessages; import org.pentaho.di.ui.core.gui.GUIResource; import org.pentaho.di.ui.spoon.Spoon; public class PopupOverwritePrompter implements OverwritePrompter { private final Shell shell; private final Props props; public PopupOverwritePrompter( Shell shell, Props props ) { this.shell = shell; this.props = props; } @Override public boolean overwritePrompt( String message, String rememberText, String rememberPropertyName ) { Object[] res = messageDialogWithToggle( "Warning", null, message, Const.WARNING, new String[] { BaseMessages.getString( Spoon.class, "System.Button.Yes" ), BaseMessages.getString( Spoon.class, "System.Button.No" ) }, 1, rememberText, !"Y".equalsIgnoreCase( props .getProperty( rememberPropertyName ) ) ); int idx = ( (Integer) res[0] ).intValue(); boolean overwrite = ( ( idx & 0xFF ) == 0 ); boolean toggleState = ( (Boolean) res[1] ).booleanValue(); props.setProperty( rememberPropertyName, ( !toggleState ) ? "Y" : "N" ); return overwrite; } public Object[] messageDialogWithToggle( String dialogTitle, Object image, String message, int dialogImageType, String[] buttonLabels, int defaultIndex, String toggleMessage, boolean toggleState ) { return GUIResource.getInstance().messageDialogWithToggle( shell, dialogTitle, (Image) image, message, dialogImageType, buttonLabels, defaultIndex, toggleMessage, toggleState ); } }