Merged refactoring from development branch.
[taxeditor.git] / taxeditor-store / src / main / java / eu / etaxonomy / taxeditor / view / datasource / handler / DataSourceMenuPropertyTester.java
1 // $Id$
2 /**
3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
6 *
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
9 */
10
11 package eu.etaxonomy.taxeditor.view.datasource.handler;
12
13 import org.eclipse.core.expressions.PropertyTester;
14 import org.eclipse.jface.viewers.IStructuredSelection;
15
16 import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
17 import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
18 import eu.etaxonomy.taxeditor.view.datasource.CdmMetaDataAwareDataSourceContainer;
19
20 /**
21 * <p>DataSourceMenuPropertyTester class.</p>
22 *
23 * @author n.hoffmann
24 * @created Sep 23, 2010
25 * @version 1.0
26 */
27 public class DataSourceMenuPropertyTester extends PropertyTester {
28
29 private static final String COMPATIBLE = "isCompatible";
30
31 /*
32 * (non-Javadoc)
33 *
34 * @see org.eclipse.core.expressions.IPropertyTester#test(java.lang.Object,
35 * java.lang.String, java.lang.Object[], java.lang.Object)
36 */
37 /** {@inheritDoc} */
38 @Override
39 public boolean test(Object receiver, String property, Object[] args,
40 Object expectedValue) {
41
42 Object[] selectedElements = ((IStructuredSelection) receiver).toArray();
43
44 if (selectedElements.length == 0) {
45 // nothing selected so all tests should fail
46 return false;
47 }
48
49 if (COMPATIBLE.equals(property)) {
50 return isCompatible(selectedElements);
51 }
52
53
54 return false;
55 }
56
57
58
59 /**
60 * @param selectedElements
61 * @return
62 */
63 private boolean isCompatible(Object[] selectedElements) {
64 for (Object object : selectedElements) {
65
66 if (object instanceof CdmMetaDataAwareDataSourceContainer) {
67 CdmMetaDataAwareDataSourceContainer container = (CdmMetaDataAwareDataSourceContainer) object;
68 return container.isDataSourceCompatible();
69 }
70 }
71 return false;
72 }
73 }