package org.xmind.cathy.internal; import org.eclipse.core.expressions.PropertyTester; import org.eclipse.core.runtime.Assert; import org.eclipse.e4.ui.model.application.ui.basic.MWindow; import org.eclipse.ui.IWorkbenchWindow; public class WindowPropertyTester extends PropertyTester { private static final String P_SHOWING_DASHBOARD = "showingDashboard"; //$NON-NLS-1$ public boolean test(Object receiver, String property, Object[] args, Object expectedValue) { Assert.isLegal(receiver instanceof IWorkbenchWindow); IWorkbenchWindow window = (IWorkbenchWindow) receiver; MWindow windowModel = window.getService(MWindow.class); Assert.isLegal(windowModel != null); if (P_SHOWING_DASHBOARD.equals(property)) { return testTag(windowModel, ICathyConstants.TAG_SHOW_DASHBOARD, expectedValue); } Assert.isLegal(false, "Unrecognized property: " + property); //$NON-NLS-1$ return false; } private boolean testTag(MWindow windowModel, String tag, Object expectedValue) { boolean actualValue = windowModel.getTags().contains(tag); if (expectedValue == null || "".equals(expectedValue)) { //$NON-NLS-1$ return actualValue; } else if (expectedValue instanceof Boolean) { return ((Boolean) expectedValue) == actualValue; } else if (expectedValue instanceof String) { return Boolean.parseBoolean((String) expectedValue) == actualValue; } Assert.isLegal(false, "Unrecognized value: " + expectedValue); //$NON-NLS-1$ return false; } }