]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.spreadsheet.common/src/org/simantics/spreadsheet/common/TreeTableCell.java
(refs #7250) Merging master, minor CHR bugfixes
[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                                 family = d.getName();
51                                 if((d.getStyle() & SWT.ITALIC) != 0) style += "Italic";
52                                 if((d.getStyle() & SWT.BOLD) != 0) style += "Bold";
53                                 size = d.getHeight();
54                         }
55                         return new SimpleFont(family, style, size);
56                 }
57                 return null;
58         }
59         
60         public void setParent(int parent) {
61                 this.parent = parent;
62         }
63         
64         @Override
65         public int getParent() {
66                 return parent;
67         }
68
69         @Override
70         public Object getData() {
71                 return data;
72         }
73
74         @Override
75         public boolean isEditable() {
76                 return editable;
77         }
78
79 }