]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.spreadsheet.common/src/org/simantics/spreadsheet/common/TreeTableCell.java
ListIndexRoots request
[simantics/platform.git] / bundles / org.simantics.spreadsheet.common / src / org / simantics / spreadsheet / common / TreeTableCell.java
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
9  *
10  * Contributors:
11  *     Semantum Oy - initial API and implementation
12  *******************************************************************************/
13 package org.simantics.spreadsheet.common;
14
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;
21
22 public class TreeTableCell extends TableCell implements ITreeTableCell {        
23         
24         private int parent = -1;
25         
26         private boolean editable = true;
27         private Object data;
28
29         public TreeTableCell() {
30         }
31         
32         public TreeTableCell(String text, Object data, Object font, int parent, int row, int column, boolean editable) {
33                 super(column, row, 0, 0, text, (IFont)font, null, null, false, 1, 1);
34                 this.editable = editable;
35                 this.parent = parent;
36                 this.data = data;
37         }
38         
39         public static TreeTableCell createTreeTableCell(String text, Object data, Object font, int parent, int row, int column, boolean editable) {
40                 return new TreeTableCell(text, data, extractIFont(font), parent, row, column, editable);
41         }
42         
43         private static IFont extractIFont(Object font) {
44                 if(font instanceof FontDescriptor) {
45                         FontDescriptor descriptor = (FontDescriptor)font;
46                         String family = "";
47                         String style = "";
48                         int size = 12;
49                         for(FontData d : descriptor.getFontData()) {
50                                 System.err.println("data: " + d);
51                                 family = d.getName();
52                                 if((d.getStyle() & SWT.ITALIC) != 0) style += "Italic";
53                                 if((d.getStyle() & SWT.BOLD) != 0) style += "Bold";
54                                 size = d.getHeight();
55                         }
56                         return new SimpleFont(family, style, size);
57                 }
58                 return null;
59         }
60         
61         public void setParent(int parent) {
62                 this.parent = parent;
63         }
64         
65         @Override
66         public int getParent() {
67                 return parent;
68         }
69
70         @Override
71         public Object getData() {
72                 return data;
73         }
74
75         @Override
76         public boolean isEditable() {
77                 return editable;
78         }
79
80 }