package net.certware.evidence.hugin.view.testers; import net.certware.evidence.hugin.view.ViewTree; import org.eclipse.core.expressions.PropertyTester; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.PlatformUI; /** * Property tester for view content selections. * @author mrb * @since 1.2.1 */ public class SelectedTester extends PropertyTester { /** * Constructor empty. */ public SelectedTester() { } /** * Tests whether the view has been loaded with model content and contains selections. * Use <code>isSelected</code> appended as property to extension name space for test. * @param receiver unused * @param property test string "isSelected" or "isNotSelected" * @param args unused * @param expectedValue unused * @return boolean true if view active condition matches test property * @see org.eclipse.core.expressions.IPropertyTester#test(Object, String, Object[], Object) */ public boolean test(Object receiver, String property, Object[] args, Object expectedValue) { boolean selected = false; IWorkbenchPart wp; try { // some can be null during launch wp = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActivePart(); if ( ! (wp instanceof ViewTree) ) return false; } catch( Exception e ) { // $codepro.audit.disable logExceptions return false; } try { ViewTree viewTree = (ViewTree)wp; selected = viewTree.hasVariableSelections(); } catch( Exception e ) { System.err.println(String.format("%s %s", "View tree selection tester",e.getMessage())); //$NON-NLS-1$ } if ( "isSelected".equals(property) ) //$NON-NLS-1$ return selected; if ( "isNotSelected".equals(property)) //$NON-NLS-1$ return !selected; return false; } }