@Override
	public void layoutContainer(Container parent) {
		
		// TODO: This repeats logic
		String screen_text = construct.screen_text();
		
		if(screen_text != null)
		{
			final String child_string = "$(node)";
			
			StringBuilder builder = new StringBuilder();
			FontMetrics metrics = Toolkit.getDefaultToolkit().getFontMetrics(font);
			
			int lastChildEnd = 0;
			
			int nextChildBegins = -1;
			int childIndex = 0;
			while((nextChildBegins = screen_text.indexOf(child_string, lastChildEnd)) >= 0)
			{
				ConstructEditor child = mDocument.editorsFromConstruct(construct.children.get(childIndex));
				
				if(child == null)
					continue;
				
				Dimension child_size = child.get_size();
				
				int nWidth = (int)Math.ceil(((double)child_size.width) / ((double)metrics.stringWidth(" ")));
				int nHeight = (int)Math.ceil(((double)child_size.height) / ((double)metrics.getHeight()));
				
				builder.append(screen_text.substring(lastChildEnd, nextChildBegins));
				
				Point pt = StringPoint(builder.toString(), metrics);
				
				child.get_component().reshape(pt.x, 
											  pt.y, 
											  child_size.width, child_size.height);
				
				for(int row=0;row<nHeight;++row)
				{
					for(int col=0;col<nWidth;++col)
						builder.append(' ');
				
					if(row != (nHeight-1))
						builder.append('\n');
				}
				
				lastChildEnd = nextChildBegins + child_string.length();
				++childIndex;
			}
		}
	}