@Override
	public List<Row> compose(List<Glyph> glyphs, ViewEventArgs args) {
		List<Row> rows = new ArrayList<Row>();				
		if (glyphs == null || glyphs.size() == 0){
			return rows;
		}
		
		Row currentRow = new Row();
		int currentTop = args.getTop();
		currentRow.setStartIndex(0);
		currentRow.setLeft(args.getLeft());
		currentRow.setTop(currentTop);
		rows.add(currentRow);
		int currentLeft = args.getLeft();		
		for (int i = 0; i < glyphs.size(); i++){
			Glyph glyph = glyphs.get(i);
			Point position = new Point(currentLeft, currentTop);
			UiGlyph uiGlyph = new UiGlyph(glyph, position, i);
			currentRow.getUiGlyphs().add(uiGlyph);			
			if ((currentLeft + 20) >= args.getFrameWidth()){
				currentRow.setEndIndex(i);
				if (i == glyphs.size() - 1){					
					break;
				}
								
				currentTop += currentRow.getHeight();
				currentRow = new Row();				
				currentRow.setLeft(args.getLeft());
				currentRow.setTop(currentTop);
				currentRow.setStartIndex(i + 1);
				rows.add(currentRow);
				currentLeft = args.getLeft();												
			}
			else{				
				currentLeft += uiGlyph.getGlyph().getWidth() + 2;
			}
		}
				
		return rows;
	}