1 /*******************************************************************************
2 * Copyright (c) 2013, 2014 Association for Decentralized
3 * Information Management in Industry THTH ry.
4 * All rights reserved. This program and the accompanying materials
5 * are made available under the terms of the THTH Simantics
6 * Division Member Component License which accompanies this
7 * distribution, and is available at
8 * http://www.simantics.org/legal/sdmcl-v10.html
11 * Semantum Oy - initial API and implementation
12 *******************************************************************************/
13 package org.simantics.spreadsheet.common;
15 import org.eclipse.jface.resource.FontDescriptor;
16 import org.eclipse.swt.SWT;
17 import org.eclipse.swt.graphics.FontData;
18 import org.simantics.document.server.io.IFont;
19 import org.simantics.document.server.io.ITreeTableCell;
20 import org.simantics.document.server.io.SimpleFont;
22 public class TreeTableCell extends TableCell implements ITreeTableCell {
24 private int parent = -1;
25 private Object parentData;
27 private boolean editable = true;
30 public TreeTableCell() {
33 public TreeTableCell(String text, Object data, Object font, Object parentData, int parent, int row, int column, boolean editable) {
34 super(column, row, 0, 0, text, (IFont)font, null, null, false, 1, 1);
35 this.editable = editable;
37 this.parentData = parentData;
42 public int getRowSpan() {
43 throw new IllegalStateException("Row span is not supported in TreeTableCell");
47 public int getColumnSpan() {
48 throw new IllegalStateException("Column span is not supported in TreeTableCell");
51 public static TreeTableCell createTreeTableCell(String text, Object data, Object font, int parent, int row, int column, boolean editable) {
52 return new TreeTableCell(text, data, extractIFont(font), null, parent, row, column, editable);
55 public static TreeTableCell createTreeTableCell2(String text, Object data, Object font, Object parentData, int row, int column, boolean editable) {
56 return new TreeTableCell(text, data, extractIFont(font), parentData, -1, row, column, editable);
59 private static IFont extractIFont(Object font) {
60 if(font instanceof FontDescriptor) {
61 FontDescriptor descriptor = (FontDescriptor)font;
65 for(FontData d : descriptor.getFontData()) {
67 if((d.getStyle() & SWT.ITALIC) != 0) style += "Italic";
68 if((d.getStyle() & SWT.BOLD) != 0) style += "Bold";
71 return new SimpleFont(family, style, size);
76 public void setParent(int parent) {
81 public Object getParentData() {
86 public int getParent() {
91 public Object getData() {
96 public boolean isEditable() {
101 public int hashCode() {
103 final int prime = 31;
105 int result = super.hashCode();
107 result = data != null ? prime * result + data.hashCode() : parent;
108 result = parentData != null ? prime * result + parentData.hashCode() : result;
109 result = prime * result + Integer.hashCode(parent);
110 result = prime * result + Boolean.hashCode(editable);
116 public boolean equals(Object obj) {
121 if (getClass() != obj.getClass())
123 TreeTableCell other = (TreeTableCell) obj;
125 if (other.data != null)
127 } else if (!data.equals(other.data))
129 if (parentData == null) {
130 if (other.parentData != null)
132 } else if (!parentData.equals(other.parentData))
134 if (parent != other.parent)
136 if (editable != other.editable)
138 return super.equals(obj);