/******************************************************************************* * Copyright (c) 2012-2017 Codenvy, S.A. * 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: * Codenvy, S.A. - initial API and implementation *******************************************************************************/ package org.eclipse.che.ide.project.node; import com.google.common.base.MoreObjects; import com.google.common.base.Objects; import org.eclipse.che.ide.api.data.HasDataObject; import org.eclipse.che.ide.api.data.tree.AbstractTreeNode; import org.eclipse.che.ide.api.data.tree.settings.HasSettings; import org.eclipse.che.ide.api.data.tree.settings.NodeSettings; import org.eclipse.che.ide.resource.Path; import org.eclipse.che.ide.ui.smartTree.presentation.HasPresentation; import org.eclipse.che.ide.ui.smartTree.presentation.NodePresentation; /** * Base class for the synthetic, non-resourced item * * @author Vlad Zhukovskiy */ public abstract class SyntheticNode<D> extends AbstractTreeNode implements HasDataObject<D>, HasPresentation, HasSettings { private D data; private NodeSettings nodeSettings; private NodePresentation nodePresentation; public static final String CUSTOM_BACKGROUND_FILL = "fill"; public SyntheticNode(D data, NodeSettings nodeSettings) { this.data = data; this.nodeSettings = nodeSettings; } /** {@inheritDoc} */ @Override public NodeSettings getSettings() { return nodeSettings; } public Path getProject() { return Path.EMPTY; } /** {@inheritDoc} */ @Override public D getData() { return data; } /** {@inheritDoc} */ @Override public void setData(D data) { this.data = data; } /** {@inheritDoc} */ @Override public final NodePresentation getPresentation(boolean update) { if (nodePresentation == null) { nodePresentation = new NodePresentation(); updatePresentation(nodePresentation); } if (update) { updatePresentation(nodePresentation); } return nodePresentation; } /** {@inheritDoc} */ @Override public final boolean supportGoInto() { return false; } /** {@inheritDoc} */ @Override public boolean equals(Object o) { if (this == o) { return true; } if (!(o instanceof SyntheticNode)) { return false; } SyntheticNode node = (SyntheticNode)o; return node.getData().equals(getData()) && node.getProject().equals(getProject()); } /** {@inheritDoc} */ @Override public int hashCode() { return Objects.hashCode(data, getProject()); } /** {@inheritDoc} */ @Override public String toString() { return MoreObjects.toStringHelper(this) .add("data", data) .add("project", getProject()) .toString(); } }