/*
 * Copyright 2003-2011 JetBrains s.r.o.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package jetbrains.mps.ide.devkit.cellExplorer;

import jetbrains.mps.nodeEditor.cells.EditorCell_Label;
import jetbrains.mps.openapi.editor.cells.EditorCell;
import jetbrains.mps.util.IterableUtil;
import jetbrains.mps.util.NameUtil;
import org.jetbrains.mps.openapi.model.SNode;

public class CellProperties {

  private SNode mySNode;
  private String myCellSNode;
  private String myCellNumber;
  private String myCellID;
  private String myCellRole;
  private String myRootCell;
  private String myCellEffectiveWidth;
  private String myCellHeight;
  private String myCellWidth;
  private String myCellKind;
  private String myCellText;

  public CellProperties(EditorCell cell) {
    myCellText = null;
    if (cell instanceof EditorCell_Label) {
      myCellText = ((EditorCell_Label) cell).getRenderedText();
    }
    myCellKind = NameUtil.shortNameFromLongName(cell.getClass().getName());
    myCellWidth = cell.getWidth() + "";
    myCellHeight = cell.getHeight() + "";
    myCellEffectiveWidth = cell.getEffectiveWidth() + "";
    myRootCell = (cell.getEditorComponent().getRootCell() == cell) ? "Yes" : "No";
    myCellID = cell.getCellId();
    myCellRole = "" + (cell.getRole());

    mySNode = cell.getSNode();
    String name = mySNode.getName();
    name = name != null ? name : "<no name>";
    myCellSNode = mySNode == null ? "no node" :
        name + " (" + NameUtil.shortNameFromLongName(mySNode.getConcept().getQualifiedName()) + ") [" + mySNode.getNodeId().toString() + "]";
    if (cell.getParent() != null) {
      myCellNumber = String.valueOf(IterableUtil.indexOf(cell.getParent(), cell));
    }
  }

  public SNode getSNode() {
    return mySNode;
  }

  public String getCellSNode() {
    return myCellSNode;
  }

  public String getCellNumber() {
    return myCellNumber;
  }

  public String getCellID() {
    return myCellID;
  }

  public String getCellRole() {
    return myCellRole;
  }

  public String getRootCell() {
    return myRootCell;
  }

  public String getCellEffectiveWidth() {
    return myCellEffectiveWidth;
  }

  public String getCellHeight() {
    return myCellHeight;
  }

  public String getCellWidth() {
    return myCellWidth;
  }

  public String getCellKind() {
    return myCellKind;
  }

  public String getCellText() {
    return myCellText;
  }
}
