/*******************************************************************************
* Copyright (c) 2016 ARM Ltd. and others
* 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:
* ARM Ltd and ARM Germany GmbH - Initial API and implementation
*******************************************************************************/
package com.arm.cmsis.config.model;
import java.util.Collection;
import java.util.LinkedList;
import java.util.Map;
import java.util.TreeMap;
/**
*
*/
public class ConfigWizardItem implements IConfigWizardItem {
private IConfigWizardItem fParent;
private EItemType fItemType;
private EItemErrorType fItemErrorType;
private int fStartLine;
private int fEndLine;
private String fName;
private String fTooltip;
private int fSkipNumber;
private int fMinBit;
private int fMaxBit;
private boolean fSelection;
private long fMinValue;
private long fMaxValue;
private long fValue;
private String fString;
private int fStringLength;
private int fBase;
private long fSpinStep;
private char fModification;
private long fModifier;
private boolean fInconsistent;
private boolean fInvertValue;
private Map<Long, String> fItems;
private LinkedList<IConfigWizardItem> fChildren;
/**
*
*/
public ConfigWizardItem(EItemType itemType, int line, IConfigWizardItem parent) {
fParent = parent;
fItemType = itemType;
fStartLine = line;
fEndLine = line;
fItemErrorType = EItemErrorType.NO_ERROR;
fName = ""; //$NON-NLS-1$
fTooltip = ""; //$NON-NLS-1$
fString = ""; //$NON-NLS-1$
fMinBit = -1;
fMaxBit = -1;
fBase = 16;
fModifier = 0;
fSpinStep = 0;
fItems = new TreeMap<>();
fChildren = new LinkedList<>();
}
@Override
public IConfigWizardItem getParent() {
return fParent;
}
@Override
public EItemType getItemType() {
return fItemType;
}
@Override
public void setItemType(EItemType type) {
fItemType = type;
}
@Override
public EItemErrorType getItemErrorType() {
return fItemErrorType;
}
@Override
public void setItemErrorType(EItemErrorType errorType) {
fItemErrorType = errorType;
}
@Override
public int getStartLine() {
return fStartLine;
}
@Override
public int getEndLine() {
return fEndLine;
}
@Override
public void setEndLine(int line) {
fEndLine = line;
}
@Override
public String getName() {
return fName;
}
@Override
public void setName(String name) {
fName = name;
}
@Override
public String getTooltip() {
return fTooltip;
}
@Override
public void extendTooltip(String moreTooltip) {
if (!fTooltip.isEmpty()) {
fTooltip += System.lineSeparator();
}
fTooltip += moreTooltip;
}
@Override
public int getSkipNumber() {
return fSkipNumber;
}
@Override
public void setSkipNumber(int skipNumber) {
fSkipNumber = skipNumber;
}
@Override
public int getMinBit() {
return fMinBit;
}
@Override
public void setMinBit(int minBit) {
fMinBit = minBit;
}
@Override
public int getMaxBit() {
return fMaxBit;
}
@Override
public void setMaxBit(int maxBit) {
fMaxBit = maxBit;
}
@Override
public boolean isSelection() {
return fSelection;
}
@Override
public void setIsSelection(boolean isSelection) {
fSelection = isSelection;
}
@Override
public long getMinValue() {
return fMinValue;
}
@Override
public void setMinValue(long minValue) {
fMinValue = minValue;
}
@Override
public long getMaxValue() {
return fMaxValue;
}
@Override
public void setMaxValue(long maxValue) {
fMaxValue = maxValue;
}
@Override
public long getValue() {
return fValue;
}
@Override
public void setValue(long value) {
fValue = value;
}
@Override
public String getString() {
return fString;
}
@Override
public void setString(String string) {
fString = string;
}
@Override
public int getStringLength() {
return fStringLength;
}
@Override
public void setStringLength(int stringLength) {
fStringLength = stringLength;
}
@Override
public int getBase() {
return fBase;
}
@Override
public void setBase(int base) {
fBase = base;
}
@Override
public long getSpinStep() {
return fSpinStep;
}
@Override
public void setSpinStep(long spinStep) {
fSpinStep = spinStep;
}
@Override
public char getModification() {
return fModification;
}
@Override
public void setModification(char modification) {
fModification = modification;
}
@Override
public long getModifier() {
return fModifier;
}
@Override
public void setModifier(long modifier) {
fModifier = modifier;
}
@Override
public boolean isInconsistent() {
return fInconsistent;
}
@Override
public void setInconsistent(boolean inconsistent) {
fInconsistent = inconsistent;
}
@Override
public boolean invertValue() {
return fInvertValue;
}
@Override
public void setInvertValue(boolean invertValue) {
fInvertValue = invertValue;
}
@Override
public Map<Long, String> getItems() {
return fItems;
}
@Override
public void addItem(long key, String value) {
fItems.put(key, value);
}
@Override
public Collection<IConfigWizardItem> getChildren() {
return fChildren;
}
@Override
public IConfigWizardItem getLastChild() {
if (fChildren == null || fChildren.size() == 0) {
return null;
}
return fChildren.getLast();
}
@Override
public void addChild(IConfigWizardItem child) {
fChildren.add(child);
}
@Override
public boolean hasChildren() {
if (fChildren == null || fChildren.isEmpty()) {
return false;
}
return true;
}
@Override
public boolean canModify() {
if (fItemType == EItemType.ROOT) {
return true;
} else if (fItemType == EItemType.HEADING_ENABLE) {
return getValue() > 0 && getParent().canModify();
} else {
return getParent().canModify();
}
}
@Override
public String toString() {
return fName;
}
}