@Override
	public void setSelected(Construct.SelectionCause cause, ConstructEditor currentOrNewlySelected, boolean bSelect) {
		if(bSelect == true) {
			propagateHighlightSelection(this);
			
			update();
			
			text_area.setBackground(new Color(230, 230, 230));
			textListener = new TextListener();
			
			text_area.addKeyListener(textListener);

			if(construct != null && construct.screen_text() == null) { // editable
				get_component().requestFocus();
				
				if(cause != Construct.SelectionCause.SelectedDirectlyWithMouse)
					text_area.moveCaretPosition(text_area.getDocument().getLength());
				
				if(cause == Construct.SelectionCause.SelectedAfterDuplicatingSibling ||
						cause == Construct.SelectionCause.SelectedAfterInsert) { 
					text_area.selectAll();
				}
			}
			
			
			String breadcrumbs = getBreadcrumbs(this.construct);
			Application.showDebugMessage("Selected " + breadcrumbs.substring(3));
		} 
		else {
			if(currentOrNewlySelected != null) {
				if(currentOrNewlySelected.construct.parent == null || 
					currentOrNewlySelected.construct.parent.equals(this.construct) == false)
				{
					construct.onBranchUnhighlighted();
				}
			}
			
			update();
			
			text_area.select(0, 0);
			text_area.setForeground(construct.debug_getForegroundColor());
			text_area.setBackground(new Color(0,0,0,0));
			text_area.removeKeyListener(textListener);
			
			requestTopFocus();
			textListener = null;
		}
	}