public void timeLineButClickHndlr(TimeLineObject selTimeLine) {
		if (selTimeLine!=null) {
			propHelper.setObject(selTimeLine, "timeline");
			int[] point = buttonsDraw.getBoundObjectInsideCoord(selTimeLine,mouseX,mouseY);
			if (point[0] > 35){ 
				cueTimeLineObject = selTimeLine;
			} else if (!"".equals(inputMode)  && (mouseButton==RIGHT) && (point[0]>12)){// if in inputmode and right click on name.
				if ( "e".indexOf(inputMode)>-1) {
					inputStr=selTimeLine.id;
					cursorPos=inputStr.length();
				} else  {
					// insert timeline expr.
					String expr="$t:"+selTimeLine.id+":";
					insertInInputStr(expr);
				}
			} 
			else if (point[0] > 12){ // if click on name.
				// create event to trigger right +ctrl clicked timeline
				 if (ctrl && mouseButton==RIGHT) {
					 if (selTimeLine!=timeLineObject && timeLineObject!=null ) {
						Event e = new Event();
						e.target=selTimeLine;
						e.targetPlayMode=shift?"l":"p";
						e.setValue("0") ;
						e.eventTime=0;
						e.oscIndex=timeLineObject.oscIndex;
						e.oscP5=oscServers[e.oscIndex];
						timeLineObject.timeLine.add(e);
						timeLineObject.rebuildTimeLine();
					 }
					return;
				}
				//set the visible timeline.
				if (shift && timeLineSet !=null) {
					if (timeLineSet.getSet().contains(selTimeLine)) {
						timeLineSet.getSet().remove(selTimeLine);
					} else {
						timeLineSet.getSet().add(selTimeLine);
					}
				} else {
					timeLineSet=null;
				}
				
				if (!ctrl) {
					if (timeLineSelection.contains(selTimeLine) &&timeLineSelection.size()>0 && timeLineObject==selTimeLine) {
						timeLineSelection.remove(selTimeLine);
					} else if (!timeLineSelection.contains(selTimeLine)) {timeLineSelection.add(selTimeLine);}
				} else {
					timeLineSelection.clear();
					timeLineSelection.add(selTimeLine);
				}
				this.timeLineIndex=timeLines.indexOf(selTimeLine);
				timeLineObject=selTimeLine;
				updateTimeLineDisplays();
			} else { // if click on activation part.
				//play/loop the cilcked timeline   this event is used just to send data
/* logic here is :-
 *
 * if (timeline playing) {stop timeline}
 * if (timeline is cued) {decue it}
 * if (ctrl || none playing ) {
 * 			dont que - play now
 *  		if (!shift) { stop others}
 * }
 * if (other timeline in group playing) {cue timeline &decue others cued  }
 */
				String playMode="p";
				if (mouseButton==RIGHT) {	playMode="l";	}
				if (!"".equals(selTimeLine.playMode)) {playMode="";} 

				Vector group = getTimeLineGroup(selTimeLine.id, true);
				Vector grpPlaying = checkOthersPlaying(selTimeLine.id);
				
				if (!"".equals(selTimeLine.playMode)) {
					selTimeLine.playMode="";return;
				}
				if (cue.checkQued(selTimeLine) ) {
					cue.deCueEveryWhere(selTimeLine);return;
				}
				if (ctrl || (grpPlaying.size()==0)) {
					if (!shift) {
						for (int j=0; j<group.size(); j++) {
							Cueable to = (Cueable)group.get(j);//TimeLineObject
							if (to!=selTimeLine && to instanceof TimeLineObject) {
								TimeLineObject t = (TimeLineObject) to;
								t.playMode = "";
							}
						}
					}
					playTimeline(selTimeLine, playMode);
					return;
				}
				if ( (grpPlaying.size()>0)) {//grpPlaying.contains(selTimeLine)
					// decue others
					for (Iterator i = group.iterator();i.hasNext()  ; ) {
						Cueable groupObject=(Cueable) i.next();
						cue.deCueEveryWhere(groupObject);
					}
					// encue timeline	
					for (Iterator i = grpPlaying.iterator();i.hasNext()  ; ) {
						TimeLineObject trig=(TimeLineObject) i.next();
						cue.addToCue(trig, selTimeLine, playMode, true, true);
					}
				}
			} 
		}
	}