summaryrefslogtreecommitdiff
path: root/propertysheet/src/org/eclipse/wb/internal/core/editor/structure/property/PropertyListIntersector.java
diff options
context:
space:
mode:
Diffstat (limited to 'propertysheet/src/org/eclipse/wb/internal/core/editor/structure/property/PropertyListIntersector.java')
-rw-r--r--propertysheet/src/org/eclipse/wb/internal/core/editor/structure/property/PropertyListIntersector.java136
1 files changed, 0 insertions, 136 deletions
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/editor/structure/property/PropertyListIntersector.java b/propertysheet/src/org/eclipse/wb/internal/core/editor/structure/property/PropertyListIntersector.java
deleted file mode 100644
index 24aea2f..0000000
--- a/propertysheet/src/org/eclipse/wb/internal/core/editor/structure/property/PropertyListIntersector.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2011 Google, Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Google, Inc. - initial API and implementation
- *******************************************************************************/
-package org.eclipse.wb.internal.core.editor.structure.property;
-
-import com.google.common.collect.Lists;
-
-import org.eclipse.wb.internal.core.model.property.Property;
-import org.eclipse.wb.internal.core.model.property.PropertyManager;
-
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * Helper for computing intersection of {@link Property} arrays.
- *
- * @author scheglov_ke
- * @coverage core.editor.structure
- */
-public final class PropertyListIntersector {
- private List<PropertyGroup> m_intersection;
-
- ////////////////////////////////////////////////////////////////////////////
- //
- // Access
- //
- ////////////////////////////////////////////////////////////////////////////
- /**
- * Updates intersection by intersecting with new given array.
- */
- public void intersect(Property[] properties) {
- if (m_intersection == null) {
- m_intersection = Lists.newArrayList();
- for (int i = 0; i < properties.length; i++) {
- Property property = properties[i];
- m_intersection.add(new PropertyGroup(property));
- }
- } else {
- for (Iterator<PropertyGroup> I = m_intersection.iterator(); I.hasNext();) {
- PropertyGroup propertyGroup = I.next();
- if (!propertyGroup.add(properties)) {
- I.remove();
- }
- }
- }
- }
-
- /**
- * @return the array of matched composite {@link Property}'s.
- */
- public Property[] getProperties() {
- List<Property> properties = Lists.newArrayList();
- for (PropertyGroup propertyGroup : m_intersection) {
- Property compositeProperty = propertyGroup.getCompositeProperty();
- if (compositeProperty != null) {
- properties.add(compositeProperty);
- }
- }
- //
- return properties.toArray(new Property[properties.size()]);
- }
-
- ////////////////////////////////////////////////////////////////////////////
- //
- // PropertyGroup
- //
- ////////////////////////////////////////////////////////////////////////////
- /**
- * The group of {@link Property}'s that match.
- */
- private static final class PropertyGroup {
- private final List<Property> m_properties = Lists.newArrayList();
-
- ////////////////////////////////////////////////////////////////////////////
- //
- // Constructor
- //
- ////////////////////////////////////////////////////////////////////////////
- public PropertyGroup(Property property) {
- m_properties.add(property);
- }
-
- ////////////////////////////////////////////////////////////////////////////
- //
- // Access
- //
- ////////////////////////////////////////////////////////////////////////////
- /**
- * @return <code>true</code> if new matched {@link Property} from given array was added.
- */
- public boolean add(Property[] properties) {
- for (Property property : properties) {
- if (add(property)) {
- return true;
- }
- }
- // no match
- return false;
- }
-
- /**
- * @return the composite {@link Property} for this group.
- */
- public Property getCompositeProperty() {
- Property properties[] = m_properties.toArray(new Property[m_properties.size()]);
- return properties[0].getComposite(properties);
- }
-
- ////////////////////////////////////////////////////////////////////////////
- //
- // Internal
- //
- ////////////////////////////////////////////////////////////////////////////
- /**
- * @return <code>true</code> if given {@link Property} matches and was added.
- */
- private boolean add(Property property) {
- Property example = m_properties.get(0);
- if (example.getClass() == property.getClass()
- && example.getTitle().equals(property.getTitle())
- && PropertyManager.getCategory(example) == PropertyManager.getCategory(property)) {
- m_properties.add(property);
- return true;
- }
- // no match
- return false;
- }
- }
-}