|
|
Re: Multiple lines of text in one tablecell? [message #447997 is a reply to message #447954] |
Thu, 23 December 2004 09:38 |
Phill Perryman Messages: 214 Registered: July 2009 |
Senior Member |
|
|
<br><font size=1 face="sans-serif">I had the same problem and could not find any way to use a variable height table.</font>
<br>
<br><font size=1 face="sans-serif">i ended up doing it in absolute code, hope it of some use. I also added a move and size listener which both call the layout method for when the size changes.</font>
<br>
<br><font size=1 face="sans-serif">Major problem is that is does not scroll so my view sets the composite provided in create part layout to fill layout and adds a scrolled composite. Then create a new composite and fill it up with the layout method shown below and then set that as the input of the scrolled composite.</font>
<br>
<br><font size=1 face="sans-serif"> protected void layout(Composite panel) {</font>
<br>
<br><font size=1 face="sans-serif"> // make sure we have something to layout</font>
<br><font size=1 face="sans-serif"> if (quoteItem == null)</font>
<br><font size=1 face="sans-serif"> return;</font>
<br>
<br><font size=1 face="sans-serif"> // get the quote as that is where the data model is</font>
<br><font size=1 face="sans-serif"> Quote quote = quoteItem.getQuote();</font>
<br>
<br><font size=1 face="sans-serif"> // if not one then give up</font>
<br><font size=1 face="sans-serif"> if (quote == null)</font>
<br><font size=1 face="sans-serif"> return;</font>
<br>
<br><font size=1 face="sans-serif"> // get the size of the area to fill up</font>
<br><font size=1 face="sans-serif"> Rectangle client = panel.getClientArea();</font>
<br>
<br><font size=1 face="sans-serif"> // going to allocate a quarter of it to the quote item name</font>
<br><font size=1 face="sans-serif"> int col1 = client.width / 4;</font>
<br><font size=1 face="sans-serif"> int col2 = client.width - col1;</font>
<br>
<br><font size=1 face="sans-serif"> // start at the top</font>
<br><font size=1 face="sans-serif"> int y = 0;</font>
<br>
<br><font size=1 face="sans-serif"> // find out how many rows are in the table model</font>
<br><font size=1 face="sans-serif"> ConfigWarning[] warnings = quote.getConfigWarnings();</font>
<br>
<br><font size=1 face="sans-serif"> // each row has two columns, the first is the name</font>
<br><font size=1 face="sans-serif"> // of the quote item, the next the problem description</font>
<br><font size=1 face="sans-serif"> for (int i = 0; i < warnings.length; i++) {</font>
<br><font size=1 face="sans-serif"> </font>
<br><font size=1 face="sans-serif"> // build the name from the data cell</font>
<br><font size=1 face="sans-serif"> Label name = new Label(panel, SWT.WRAP);</font>
<br><font size=1 face="sans-serif"> name.setText(warnings[i].getQuoteItemName());</font>
<br><font size=1 face="sans-serif"> name.setLocation(0, y);</font>
<br><font size=1 face="sans-serif"> Point p1 = name.computeSize(col1, SWT.DEFAULT, true);</font>
<br><font size=1 face="sans-serif"> name.setSize(p1.x, p1.y);</font>
<br>
<br><font size=1 face="sans-serif"> // and the description</font>
<br><font size=1 face="sans-serif"> Label desc = new Label(panel, SWT.WRAP);</font>
<br><font size=1 face="sans-serif"> desc.setText(warnings[i].getWarningMessage());</font>
<br><font size=1 face="sans-serif"> if (warnings[i].isLockPrevention())</font>
<br><font size=1 face="sans-serif"> desc.setForeground(red);</font>
<br><font size=1 face="sans-serif"> desc.setLocation(col1, y);</font>
<br><font size=1 face="sans-serif"> Point p2 = desc.computeSize(col2, SWT.DEFAULT, true);</font>
<br><font size=1 face="sans-serif"> desc.setSize(p2.x, p2.y);</font>
<br>
<br><font size=1 face="sans-serif"> // move down the number of pixels of the tallest</font>
<br><font size=1 face="sans-serif"> // column</font>
<br><font size=1 face="sans-serif"> if (p1.y > p2.y)</font>
<br><font size=1 face="sans-serif"> y += p1.y;</font>
<br><font size=1 face="sans-serif"> else {</font>
<br><font size=1 face="sans-serif"> y += p2.y;</font>
<br><font size=1 face="sans-serif"> }</font>
<br><font size=1 face="sans-serif"> }</font>
<br><font size=1 face="sans-serif"> }</font>
|
|
|
Powered by
FUDForum. Page generated in 0.03935 seconds