亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? task.java

?? Owing to the applet Gantt chart source yard, already Chinese melt, Gantt chart can demonstrate a Chi
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
	public String getIndentedName() {		StringBuffer spaces = new StringBuffer();		Task p = parentTask;		while (p != null) {			spaces.append("  ");			p = p.parentTask;		}		return spaces.toString() + name;	}	/**	 * Agrega una restriccion de la cual esta tarea depende	 * Si ya existe un constraint entre estas tareas se genera una excepcion.	 * @param c	 */	void addConstraint(Constraint c) throws GanttException {		c.getMasterTask().checkConstrained(c.getSlaveTask());		for (Iterator it = c.getMasterTask().childConstraints.iterator();			it.hasNext();			) {			Constraint ct = (Constraint) it.next();			if (ct.getSlaveTask() == this)				throw new GanttException(Messages.getString("task.error.dupConstraint")); //$NON-NLS-1$		}		c.getMasterTask().childConstraints.addElement(c);		constraints.addElement(c);		setDirty();		project.sendChange(new ProjectChange(this));	}	/**	 * Retorna el largo de la tarea en minutos habiles.	 * Esta funcion no debe llamar a recalc ya que no se apoya en ella.	 */	public int getLength() {		return length;	}	/**	 * Asigna el largo de la tarea en minutos habiles.	 */	public void setLength(int newLength) throws GanttException {		if (isResume()) {			throw new GanttException(Messages.getString("task.error.chgLength")); //$NON-NLS-1$		}		Command cmd = new SetCommand(this, "setLength", newLength, length);		length = newLength;		setDirty();		project.registerCommand(cmd);		project.sendChange(new ProjectChange(this));	}	/**	 * Asigna el nombre.	 */	public void setName(String newName) {		Command cmd = new SetCommand(this, "setName", newName, name);		if (newName == null)			name = "";		else			name = newName;		project.registerCommand(cmd);		project.sendChange(new ProjectChange(this));	}	/**	 * Retorna la fecha minima en que la tarea puede comenzar	 */	public Date getNotBeforeDate() {		return notBeforeDate;	}	/**	 * Asigna la fecha minima en que la tarea puede comenzar	 */	public void setNotBeforeDate(Date newNotBeforeDate) throws GanttException {		if (childTasks.size() > 0) {			throw new GanttException(Messages.getString("task.error.chgNotBeforeDate")); //$NON-NLS-1$		}		Command cmd =			new SetCommand(				this,				"setNotBeforeDate",				newNotBeforeDate,				notBeforeDate);		notBeforeDate = newNotBeforeDate;		setDirty();		project.registerCommand(cmd);		project.sendChange(new ProjectChange(this));	}	/**	 * retorna los comentarios asociados a la tarea	 */	public String getComments() {		return comments;	}	/**	 * Asigna los comentarios de la tarea	 */	public void setComments(String newComments) {		Command cmd =			new SetCommand(this, "setComments", newComments, comments);		comments = newComments;		project.registerCommand(cmd);		project.sendChange(new ProjectChange(this));	}	/**	 * Retorna la fecha calculada de inicio de la tarea	 * de acuerdo al calendario del proyecto	 */	public Date getStartDate() {		recalc();		return startDate;	}	/**	 * Retorna la fecha de termino de la tarea en dias reales	 * Asume que una tarea de un dia se terminan a ultima hora del mismo dia	 * Todas las tareas comienzan a primera hora del dia.	 * Solo cuentan los campos de dia (no los de hh,mm,ss y ms)	 */	public Date getFinishDate() {		recalc();		return finishDate;	}	public Vector getChildTasks() {		return childTasks;	}	// Metodos protegidos	/**     * Marca la tarea para ser recalculada...     * Originalmente recalculaba recursivamente:     * <ul>      * <li>los hijos: si depende de otras tareas (incluso indirectamente)      * <li>los dependientes     * <li>La tarea padre     * </ul>     * 	 * Hoy llama a {@link Project#allDirty()} y asigna todas las tareas     * como sucias, esto elimino muchos errores en el recalculo y no     * toma tanto tiempo como para ser un problema.	 * Recursiva sobre las tareas resumen	 */	protected void setDirty() {        project.allDirty();	}	/**	 * Obtiene la fecha de inicio basado solo en contraints y en las restricciones	 * heredadas de la tarea padre.	 * <p>Si no hay constraints, se parte desde la fecha de inicio del proyecto.</p>	 * <p>no afecta el estado de dirty.</p>	 * 	 * @returns la fecha de inicio de la tarea	 */	protected Date getConstrainedStart() {		Date cStart = notBeforeDate;		if (cStart == null)			cStart = project.getStartDate();		for (Enumeration e = constraints.elements(); e.hasMoreElements();) {			Constraint c = (Constraint) e.nextElement();			Date test = c.getStartDate();			if ((cStart == null) || (test.after(cStart))) {				cStart = test;			}		}		//		Si el resumen padre tiene restricciones, se heredan		if (parentTask != null) {			Date cDate = parentTask.getConstrainedStart();			if (cStart.before(cDate)) {				cStart = cDate;			}		} else { // es la tarea principal. ya tiene un startDate		}		return cStart;	}	/**	 * Calculo de restricciones	 * revisar restricciones.	 * deja el estado limpio (not dirty)	 */	protected void recalc() {		if (!dirty)			return;		startDate = getConstrainedStart();		if (childTasks.size() > 0) { // es tarea resumen? tiene tareas hijas			// inicio=min({child startdates})						Date minChild = null;			Date maxChild = null;			for (Enumeration e = childTasks.elements(); e.hasMoreElements();) {				Task t = (Task) e.nextElement();				Date cDate = t.getStartDate();				if ((minChild == null) || (minChild.after(cDate))) {					minChild = cDate;				}				cDate = t.getFinishDate();				if ((maxChild == null) || (maxChild.before(cDate))) {					maxChild = cDate;				}			}			if (minChild != null)				startDate = minChild;			finishDate = maxChild;			length =				project.getDateOrganizer().daysBetween(startDate, finishDate);			double a = 0, b = 0;			for (Enumeration e = childTasks.elements(); e.hasMoreElements();) {				Task t = (Task) e.nextElement();				a += (t.getLength() * t.getCompleted()) / 100.0;				b += t.getLength();			}			completed = (int) (100.0 * (a / b));		} else { // es una hoja!						finishDate =				project.getDateOrganizer().getFinishDate(startDate, length);		}		dirty = false;	}	public Vector getChildConstraints() {		return childConstraints;	}	/**	 * Retorna los minutos totales asociados a un recurso.	 * @param r recurso	 * @return	 */	public int getTotalResourceUnits(Resource r) {		int childUnits = 0;		if (childTasks.size() != 0) { // es tarea resumen?			for (Enumeration e = childTasks.elements(); e.hasMoreElements();) {				Task t = (Task) e.nextElement();				childUnits += t.getTotalResourceUnits(r);			}		}		return getLocalTotalResourceUnits(r) + childUnits;	}	/**	 * Retorna los minutos totales asociados a un recurso solo en esta tarea.	 * @param r recurso	 * @return	 */	public int getLocalTotalResourceUnits(Resource r) {		int units = 0;		int minutes =			getLength() * project.getDateOrganizer().workHours * 60				+ project.getDateOrganizer().workMinutes;		for (Iterator i = getAsignations().iterator(); i.hasNext();) {			Asignation a = (Asignation) i.next();			if (a.getResource().equals(r)) {				units = (int) (a.getUnits() * minutes / 100.0);				break;			}		}		return units;	}	/**	 * Retorna los minutos trabajados asociados a un recurso.	 * @param r recurso	 * @return	 */	public int getWorkedResourceUnits(Resource r) {		int childUnits = 0;		if (childTasks.size() != 0) { // es tarea resumen?			for (Enumeration e = childTasks.elements(); e.hasMoreElements();) {				Task t = (Task) e.nextElement();				childUnits += t.getWorkedResourceUnits(r);			}		}		return getLocalWorkedResourceUnits(r) + childUnits;	}	/**	 * Retorna los minutos trabajados asociados a un recurso solo en esta tarea.	 * @param r recurso	 * @return	 */	public int getLocalWorkedResourceUnits(Resource r) {		int units = 0;		int minutes =			getLength() * project.getDateOrganizer().workHours * 60				+ project.getDateOrganizer().workMinutes;		for (Iterator i = getAsignations().iterator(); i.hasNext();) {			Asignation a = (Asignation) i.next();			if (a.getResource().equals(r)) {				units = (int) (a.getUnits() * minutes / 100.0);				units = (int) (units * getCompleted() / 100.0);				break;			}		}		return units;	}	/**	 * Asigna el nivel de completitud de la tarea.	 * @param c completitud en un porcentaje en el rango 0..100	 */	public void setCompleted(int newCompleted) {		if (childTasks.size() != 0) { // es tarea resumen?			throw new RuntimeException(Messages.getString("task.error.chgCompleted")); //$NON-NLS-1$		}		Command cmd =			new SetCommand(this, "setCompleted", newCompleted, completed);		completed = newCompleted;		setDirty();		project.registerCommand(cmd);		project.sendChange(new ProjectChange(this));	}	/**	 * Obtiene el porcentaje terminado de una tarea.	 * En el caso de las tareas resumen, el total se calcula en	 * la funcion recalc	 * @return	 */	public int getCompleted() {		return completed;	}	/**	 * Reasigna al recurso con una cantidad de unidades	 * Si ya esta asignado, lo reasigna.	 * Si las unidades son cero, se elimina la asignacion	 * existente (o no se agrega).	 * @param r	 * @param u	 */	public void addResource(Resource r, int u) {		removeResource(r);		if (u == 0) {			project.sendChange(new ProjectChange(this));			return;		}		Asignation a = new Asignation();		a.setResource(r);		a.setUnits(u);		resources.addElement(a);		project.sendChange(new ProjectChange(this));	}	/**	 * Remueve un recurso de la lista de recursos	 * 	 */	public void removeResource(Resource r) {		for (int i = 0; i < resources.size(); i++) {			Asignation a = (Asignation) resources.elementAt(i);			if (a.getResource().equals(r)) {				resources.remove(i);				return;			}		}		project.sendChange(new ProjectChange(this));	}	public Vector getAsignations() {		return resources;	}	/**	 *  	 * @param r	 * @return	 */	public int getAsignationUnits(Resource r) {		for (Iterator i = resources.iterator(); i.hasNext();) {			Asignation a = (Asignation) i.next();			if (a.getResource() == r)				return a.getUnits();		}		return 0;	}	public Task getParentTask() {		return parentTask;	}	public boolean isChildOf(Task p) {		Task t = this;		while ((t.parentTask != null) && (t.parentTask != p)) {			t = t.parentTask;		}		return (p == t.parentTask);	}	// serializacion	private void readObject(java.io.ObjectInputStream in)		throws IOException, ClassNotFoundException {		in.defaultReadObject();		// reiniciar variables transientes...		dirty = true;	}	/**	 * Retorna un string con las asignaciones de personas	 * @return	 */	public String getCompletionDescription() {		Vector a = getAsignations();		StringBuffer toPrint = new StringBuffer(30);		for (int j = 0; j < a.size(); j++) {			Asignation asign = (Asignation) a.elementAt(j);			toPrint.append(" ");			toPrint.append(asign.getResource().getInitials());			toPrint.append("[");			toPrint.append(asign.getUnits());			toPrint.append("%]");		}		//toPrint.append(" - ");		//toPrint.append(getCompleted());		//toPrint.append("%");		return toPrint.toString();	}	/**	 * @see java.lang.Object#toString()	 */	public String toString() {		return "Task(" + name + ")";	}	int visibleIndex = 0;	/**	 * indice visible	 * @return indice 1..	 */	public int getVisibleIndex() {		return visibleIndex;	}	boolean childsVisible = true;	public boolean getChildsVisible() {		if (!isResume())			return true;		return childsVisible;	}	public void setChildsVisible(boolean b) {		childsVisible = b;		// reorganizar los ids visibles		project.rebuildVIds();		project.registerCommand(			new SetCommand(this, "setChildsVisible", b, !b));		project.sendChange(new ProjectChange(this));	}	public boolean isVisible() {		Task p = parentTask;		while (p != null) {			if (!p.childsVisible)				return false;			p = p.parentTask;		}		return true;	}	/**	 * Retorna una referencia al objeto que administra los colores de esta tarea	 *	 */	public TaskColors getTaskColors() {		if (isResume())			return project.getGraphColors().defaultResumeColors;		return project.getGraphColors().defaultTaskColors;	}	Vector snapshots = new Vector();	/**	 * Almacena el estado de la tarea en un snapshot	 * @param date	 * @param name	 */	public void takeSnapshot(Date date) {		snapshots.add(new SnapShot(date, this));	}	/**	 * Quita un snapshot de la lista	 * @param date	 */	public void removeSnapshot(Date date) {		for (int i = 0; i < snapshots.size(); i++) {			SnapShot ss = (SnapShot) snapshots.get(i);			if (ss.date.equals(date)) {				snapshots.remove(ss);			}		}	}	public SnapShot getSnapshot(Date d) {		for (int i = 0; i < snapshots.size(); i++) {			SnapShot ss = (SnapShot) snapshots.get(i);			if (ss.date.equals(d))				return ss;		}		return null;	}	public static class SnapShot {		public Date date;		public Date start, end;		int completed;		public SnapShot(Date d, Task t) {			date = d;			start = t.getStartDate();			end = t.getFinishDate();			completed = t.getCompleted();		}		/** 		 * Constructor para cuando se lee desde un XML.		 * @param d		 * @param t		 */		public SnapShot(Date d, Date s, Date e, int c) {			date = d;			start = s;			end = e;			completed = c;		}	}	public int getPriority() {		return priority;	}	public void setPriority(int p) {		Command cmd = new SetCommand(this, "setPriority", p, priority);		priority = p;		project.registerCommand(cmd);		project.sendChange(new ProjectChange(this));	}	public int getMinLength() {		return minLength;	}	public int getMaxLength() {		return maxLength;	}	public void setMinLength(int newLength) {		Command cmd =			new SetCommand(this, "setMinLength", newLength, minLength);		minLength = newLength;		project.registerCommand(cmd);		project.sendChange(new ProjectChange(this));	}	public void setMaxLength(int l) {		Command cmd = new SetCommand(this, "setMaxLength", l, maxLength);		maxLength = l;		project.registerCommand(cmd);		project.sendChange(new ProjectChange(this));	}	public String getNotes() {		return notes;	}	public void setNotes(String newNotes) {		Command cmd = new SetCommand(this, "setNotes", newNotes, notes);		notes = newNotes;		project.registerCommand(cmd);		project.sendChange(new ProjectChange(this));	}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区三区蝌蚪| 亚洲一区二区综合| 日韩美女视频在线| 欧美亚洲丝袜传媒另类| 一本一道波多野结衣一区二区| 成人激情av网| 99re热这里只有精品视频| 国产成人亚洲综合a∨婷婷图片 | 亚洲欧美乱综合| 国产精品久久影院| 中文字幕在线视频一区| 亚洲欧美激情一区二区| 一区二区在线免费| 亚洲一区二区三区国产| 石原莉奈一区二区三区在线观看| 日韩极品在线观看| 久久国产精品第一页| 国产一区 二区 三区一级| 国产精品88888| 91在线观看美女| 欧美片网站yy| 久久婷婷久久一区二区三区| 中文字幕免费在线观看视频一区| 亚洲私人黄色宅男| 视频一区免费在线观看| 国产乱人伦精品一区二区在线观看 | 成人在线综合网| 色视频成人在线观看免| 欧美久久久久免费| 久久久国产一区二区三区四区小说 | 婷婷丁香激情综合| 精品一区二区三区在线播放 | 亚洲成人动漫一区| 激情小说欧美图片| 9色porny自拍视频一区二区| 欧美日韩一区二区三区在线 | 972aa.com艺术欧美| 欧美日韩精品一区二区天天拍小说 | 欧美精品一区在线观看| 日本一区二区三区高清不卡| 一级中文字幕一区二区| 激情五月激情综合网| 欧美调教femdomvk| 国产精品国产三级国产aⅴ原创| 性感美女久久精品| aa级大片欧美| 国产欧美一区视频| 日韩成人av影视| 一本色道久久综合狠狠躁的推荐| 欧美不卡一区二区三区| 一区二区三区视频在线看| 国产精品一级在线| 日韩一区二区三区免费看| 亚洲黄色小说网站| 国产成人在线观看| 26uuu亚洲| 看电影不卡的网站| 91精品国产综合久久国产大片| 一区二区三区四区中文字幕| 成人av先锋影音| 国产欧美日产一区| 激情成人午夜视频| 26uuu亚洲综合色| 激情综合亚洲精品| 亚洲精品一区二区三区蜜桃下载| 日韩av电影免费观看高清完整版| 在线看国产一区二区| 亚洲欧洲中文日韩久久av乱码| 懂色av中文一区二区三区| 亚洲精品一区二区精华| 国内精品久久久久影院一蜜桃| 欧美一区二区不卡视频| 三级欧美在线一区| 日韩欧美一卡二卡| 久久99九九99精品| 久久久精品国产免大香伊 | 99这里只有久久精品视频| 久久久精品中文字幕麻豆发布| 国产剧情av麻豆香蕉精品| 久久青草国产手机看片福利盒子 | 日韩欧美国产一区在线观看| 亚洲国产成人porn| 在线观看亚洲专区| 亚洲成人在线免费| 日韩你懂的在线播放| 国产精品1区2区3区在线观看| 日韩免费高清av| 粉嫩高潮美女一区二区三区| 亚洲人一二三区| 在线观看一区不卡| 蜜桃视频免费观看一区| 2020国产精品| 99久久免费视频.com| 午夜久久久久久久久久一区二区| 欧美老人xxxx18| 韩国在线一区二区| 欧美国产日韩一二三区| 99精品视频在线播放观看| 亚洲国产精品久久不卡毛片| 欧美成人三级在线| av午夜精品一区二区三区| 午夜视频在线观看一区二区三区| 精品国产乱码久久久久久浪潮| 成人综合激情网| 日韩—二三区免费观看av| 中文字幕乱码久久午夜不卡 | 色欧美片视频在线观看在线视频| 亚洲免费观看在线观看| 日韩一区二区在线观看视频播放| 色乱码一区二区三区88| 日韩精品国产精品| 国产精品乱人伦一区二区| 欧美精品日韩一本| 国产·精品毛片| 日韩国产精品久久久久久亚洲| 久久精品男人天堂av| 欧美另类久久久品| 91免费视频网| 国产乱子轮精品视频| 亚洲第四色夜色| 国产精品成人在线观看| 欧美一级淫片007| 色综合色综合色综合色综合色综合 | 欧美日韩高清在线播放| 国精产品一区一区三区mba视频 | 欧美mv日韩mv国产网站| 99精品久久只有精品| 精品一区二区三区在线播放视频 | 国产精品久久久久久久久免费相片| 欧美亚洲国产一区在线观看网站| 国产成人av自拍| 免播放器亚洲一区| 亚洲欧美国产77777| 26uuu亚洲综合色| 91麻豆精品91久久久久同性| 91视视频在线直接观看在线看网页在线看| 蜜臀va亚洲va欧美va天堂| 午夜视频在线观看一区| 亚洲美女免费视频| 国产精品久久久爽爽爽麻豆色哟哟| 91精品中文字幕一区二区三区| 欧美性猛交一区二区三区精品| 99久久精品一区| 成人激情开心网| 成人精品gif动图一区| 国产精品夜夜嗨| 国产伦理精品不卡| 国产一区二区三区在线观看精品| 日本不卡一二三| 免费黄网站欧美| 精品一区二区在线视频| 久久爱另类一区二区小说| 美女一区二区久久| 男男视频亚洲欧美| 日韩电影在线免费看| 免费在线观看精品| 久久国产精品第一页| 国产一区视频网站| 国产jizzjizz一区二区| 成人精品国产免费网站| voyeur盗摄精品| 91蜜桃视频在线| 欧美中文一区二区三区| 91精品国产免费| 欧美成人精品高清在线播放| 精品国产伦理网| 国产精品三级av在线播放| 国产农村妇女毛片精品久久麻豆| 久久久精品国产99久久精品芒果| 亚洲国产精品v| 一区二区三区在线免费视频 | 麻豆精品在线看| 国产精品中文欧美| 成人激情文学综合网| 欧美在线视频你懂得| 日韩一级片网站| 国产日韩精品一区二区浪潮av| 国产精品久久99| 亚洲成人av免费| 黄色日韩网站视频| 成人av午夜电影| 欧美一区二区不卡视频| 国产欧美久久久精品影院| 亚洲激情欧美激情| 久久国产成人午夜av影院| 成人午夜激情影院| 欧美日韩专区在线| 久久精品无码一区二区三区| 一区二区三区欧美| 久久精品国产99| av一二三不卡影片| 日韩一区二区三区视频在线 | 欧美日本一区二区三区| 久久久五月婷婷| 国产精品一区一区| 91国产福利在线| 国产亚洲女人久久久久毛片| 亚洲成av人片一区二区| 成人黄色av电影| 精品国产第一区二区三区观看体验 |