001 // This file is part of AceWiki. 002 // Copyright 2008-2012, AceWiki developers. 003 // 004 // AceWiki is free software: you can redistribute it and/or modify it under the terms of the GNU 005 // Lesser General Public License as published by the Free Software Foundation, either version 3 of 006 // the License, or (at your option) any later version. 007 // 008 // AceWiki is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without 009 // even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 010 // Lesser General Public License for more details. 011 // 012 // You should have received a copy of the GNU Lesser General Public License along with AceWiki. If 013 // not, see http://www.gnu.org/licenses/. 014 015 package ch.uzh.ifi.attempto.acewiki.gui; 016 017 import ch.uzh.ifi.attempto.echocomp.Label; 018 import nextapp.echo.app.Alignment; 019 import nextapp.echo.app.Column; 020 import nextapp.echo.app.Component; 021 import nextapp.echo.app.Extent; 022 import nextapp.echo.app.Font; 023 import nextapp.echo.app.Row; 024 import nextapp.echo.app.layout.RowLayoutData; 025 026 /** 027 * This class represents a GUI component that is shown as a list item with a preceding "-". 028 * 029 * @author Tobias Kuhn 030 */ 031 public class ListItem extends Row { 032 033 private static final long serialVersionUID = 1214629285195105570L; 034 035 /** 036 * Creates a new list item that contains the given components. 037 * 038 * @param components The components of the list item. 039 */ 040 public ListItem(Component... components) { 041 setCellSpacing(new Extent(2)); 042 Label l = new Label("-", Font.PLAIN, 11); 043 RowLayoutData layout = new RowLayoutData(); 044 layout.setAlignment(new Alignment(Alignment.LEFT, Alignment.TOP)); 045 l.setLayoutData(layout); 046 add(l); 047 if (components.length == 1) { 048 add(components[0]); 049 } else { 050 Column col = new Column(); 051 col.setCellSpacing(new Extent(2)); 052 Row row = new Row(); 053 for (Component c : components) { 054 if (c == null) { 055 col.add(row); 056 row = new Row(); 057 } else { 058 row.add(c); 059 } 060 col.add(row); 061 add(col); 062 } 063 } 064 } 065 066 }