blob: fd7f0356590dd73fdc9583bdbac47c25ee61ace6 [file] [log] [blame]
/*
* Copyright (c) 1998, 2021 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0,
* or the Eclipse Distribution License v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
// Contributors:
// Oracle - initial API and implementation from Oracle TopLink
// IBM - Bug 537795: CASE THEN and ELSE scalar expression Constants should not be casted to CASE operand type
package org.eclipse.persistence.tools.beans;
import javax.swing.event.*;
import javax.swing.tree.*;
import org.eclipse.persistence.internal.expressions.*;
/**
* Used for the tree view within expression editor.
*/
public class ExpressionTreeModel implements TreeModel {
protected ExpressionNode root;
public ExpressionTreeModel(ExpressionNode expression) {
this.root = expression;
}
@Override
public void addTreeModelListener(TreeModelListener listener) {
}
@Override
public Object getChild(Object parent, int index) {
parent = ((ExpressionNode)parent).getExpression();
if (parent instanceof CompoundExpression) {
CompoundExpression expression = (CompoundExpression)parent;
if (index == 0) {
return new ExpressionNode(expression.getFirstChild());
} else if (index == 1) {
return new ExpressionNode(expression.getSecondChild());
}
} else if (parent instanceof FunctionExpression) {
FunctionExpression expression = (FunctionExpression)parent;
return new ExpressionNode(expression.getChildren().elementAt(index));
}
return null;
}
@Override
public int getChildCount(Object parent) {
parent = ((ExpressionNode)parent).getExpression();
if (parent instanceof CompoundExpression) {
return 2;
} else if (parent instanceof FunctionExpression) {
FunctionExpression expression = (FunctionExpression)parent;
return expression.getChildren().size();
} else {
return 0;
}
}
@Override
public int getIndexOfChild(Object parent, Object child) {
parent = ((ExpressionNode)parent).getExpression();
child = ((ExpressionNode)child).getExpression();
if (parent instanceof CompoundExpression) {
CompoundExpression expression = (CompoundExpression)parent;
if (expression.getFirstChild() == child) {
return 0;
} else if (expression.getSecondChild() == child) {
return 1;
}
} else if (parent instanceof FunctionExpression) {
FunctionExpression expression = (FunctionExpression)parent;
return expression.getChildren().indexOf(child);
}
return 0;
}
/**
* getRoot method comment.
*/
@Override
public Object getRoot() {
return root;
}
@Override
public boolean isLeaf(Object node) {
node = ((ExpressionNode)node).getExpression();
return !((node instanceof CompoundExpression) ||
(node instanceof FunctionExpression));
}
@Override
public void removeTreeModelListener(TreeModelListener listner) {
}
@Override
public void valueForPathChanged(TreePath path, Object newValue) {
}
}