/* * Pentaho Data Integration * * Copyright (C) 2002-2013 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.util; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.FormAttachment; import org.eclipse.swt.layout.FormData; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.MessageBox; import org.eclipse.swt.widgets.Shell; import org.pentaho.di.core.plugins.PluginInterface; import org.pentaho.di.core.plugins.StepPluginType; import org.pentaho.di.core.util.StringUtil; import org.pentaho.di.i18n.BaseMessages; import org.pentaho.di.ui.core.dialog.ShowHelpDialog; import org.pentaho.di.ui.core.gui.GUIResource; public class HelpUtils { private static final Class<?> PKG = HelpUtils.class; public static Button createHelpButton( final Composite parent, final String title, final PluginInterface plugin ) { Button button = newButton( parent ); button.addSelectionListener( new SelectionAdapter() { @Override public void widgetSelected( SelectionEvent arg0 ) { openHelpDialog( parent.getShell(), plugin ); } } ); return button; } public static Button createHelpButton( final Composite parent, final String title, final String url, final String header ) { Button button = newButton( parent ); button.addSelectionListener( new SelectionAdapter() { @Override public void widgetSelected( SelectionEvent arg0 ) { openHelpDialog( parent.getShell(), title, url, header ); } } ); return button; } private static Button newButton( final Composite parent ) { Button button = new Button( parent, SWT.PUSH ); button.setImage( GUIResource.getInstance().getImageHelpWeb() ); button.setText( BaseMessages.getString( PKG, "System.Button.Help" ) ); button.setToolTipText( BaseMessages.getString( PKG, "System.Tooltip.Help" ) ); FormData fdButton = new FormData(); fdButton.left = new FormAttachment( 0, 0 ); fdButton.bottom = new FormAttachment( 100, 0 ); button.setLayoutData( fdButton ); return button; } public static String getHelpDialogTitle( PluginInterface plugin ) { if ( plugin == null ) { return ""; } String msgKey = ""; // TODO currently support only Step and JobEntry - extend if required. if ( plugin.getPluginType().equals( StepPluginType.class ) ) { msgKey = "System.ShowHelpDialog.StepPluginType.Title"; } else { msgKey = "System.ShowHelpDialog.JobEntryPluginType.Title"; } return BaseMessages.getString( PKG, msgKey, plugin.getName() ); } public static boolean isPluginDocumented( PluginInterface plugin ) { if ( plugin == null ) { return false; } return !StringUtil.isEmpty( plugin.getDocumentationUrl() ); } public static ShowHelpDialog openHelpDialog( Shell shell, PluginInterface plugin ) { if ( shell == null || plugin == null ) { return null; } if ( isPluginDocumented( plugin ) ) { return openHelpDialog( shell, getHelpDialogTitle( plugin ), plugin.getDocumentationUrl(), plugin.getName() ); } else { MessageBox mb = new MessageBox( shell, SWT.OK | SWT.ICON_ERROR ); String msgKey = ""; // TODO currently support only Step and JobEntry - extend if required. if ( plugin.getPluginType().equals( StepPluginType.class ) ) { msgKey = "System.ShowHelpDialog.Step.HelpIsNotAvailable"; } else { msgKey = "System.ShowHelpDialog.JobEntry.HelpIsNotAvailable"; } mb.setMessage( BaseMessages.getString( PKG, msgKey, plugin.getName() ) ); mb.setText( BaseMessages.getString( PKG, "System.Dialog.Error.Title" ) ); mb.open(); } return null; } public static ShowHelpDialog openHelpDialog( Shell shell, String dialogTitle, String url, String header ) { ShowHelpDialog helpDlg = new ShowHelpDialog( shell, dialogTitle, url, header ); helpDlg.open(); return helpDlg; } }