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

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

?? jchempaintmodel.java

?? 化學圖形處理軟件
?? JAVA
字號:
/* *  $RCSfile$ *  $Author: egonw $ *  $Date: 2007-05-01 18:33:49 +0200 (Tue, 01 May 2007) $ *  $Revision: 8289 $ * *  Copyright (C) 1997-2007  The JChemPaint project * *  Contact: jchempaint-devel@lists.sourceforge.net * *  This program is free software; you can redistribute it and/or *  modify it under the terms of the GNU Lesser General Public License *  as published by the Free Software Foundation; either version 2.1 *  of the License, or (at your option) any later version. *  All we ask is that proper credit is given for our work, which includes *  - but is not limited to - adding the above copyright notice to the beginning *  of your source code files, and to any copyright notice that you may distribute *  with programs based on this work. * *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU Lesser General Public License for more details. * *  You should have received a copy of the GNU Lesser General Public License *  along with this program; if not, write to the Free Software *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. */package org.openscience.cdk.applications.jchempaint;import java.util.EventObject;import java.util.Iterator;import javax.swing.event.ChangeEvent;import javax.swing.event.ChangeListener;import javax.swing.event.EventListenerList;import org.openscience.cdk.interfaces.IAtomContainer;import org.openscience.cdk.CDKConstants;import org.openscience.cdk.interfaces.IChemModel;import org.openscience.cdk.controller.Controller2DModel;import org.openscience.cdk.event.ICDKChangeListener;import org.openscience.cdk.renderer.Renderer2DModel;import org.openscience.cdk.tools.MFAnalyser;import org.openscience.cdk.tools.manipulator.ChemModelManipulator;/** *  The model on which JChemPaint opterates. It holds all the models of the *  different components used in JChemPaint and provides some methods for their *  interoperability. * * @author        steinbeck * @cdk.created       2003-02-17 * @cdk.module    jchempaint */public class JChemPaintModel implements java.io.Serializable, ICDKChangeListener {	private static final long serialVersionUID = -6072472241802965261L;	/**  Description of the Field */	protected transient EventListenerList changeListeners = new EventListenerList();	private String title;	private String[] status = new String[3];	private String lastAction;	private String author;	private String software;	private String gendate;	private boolean isModified = false;	/**  The Model that contains the actual chemistry */	private IChemModel model;	/**	 *  The model for the renderer (which atoms are highlighted, etc...), taken	 *  from the Chemistry Development Kit (http://cdk.sourceforge.net)	 */	private Renderer2DModel rendererModel;	private Controller2DModel controllerModel;	/**  Creates an empty JChemPaintModel */	public JChemPaintModel() {		this(new org.openscience.cdk.ChemModel());	}	/**	 *  Creates a new JChemPaintModel that contains a ChemModel	 *	 * @param  chemModel	 */	public JChemPaintModel(IChemModel chemModel) {		Object modelTitle = chemModel.getProperty(CDKConstants.TITLE);		if (modelTitle == null) {			title = JCPLocalizationHandler.getInstance().getString("Untitled-") +					System.currentTimeMillis();		}		else {			title = modelTitle.toString();		}		this.model = chemModel;		controllerModel = new Controller2DModel();		rendererModel = new Renderer2DModel();	}	/**	 *  If a model has been restored after an Undo/Redo Operation it should fire a	 *  change event so that everyone can read it's state.	 */	public void activate() {		fireChange();	}	/**	 *  Sets the status String of the last action.	 *	 * @param  s  String	 */	public void setLastAction(String s) {		lastAction = s;		status[1] = s;	}	/**	 *  Returns a ChangeListener object.	 *	 * @return    EventListenerList	 */	public EventListenerList getChangeListeners() {		return changeListeners;	}	/**	 *  Sets a ChangeListener.	 *	 * @param  changeListeners	 */	public void setChangeListeners(EventListenerList changeListeners) {		this.changeListeners = changeListeners;	}	/*	 *  Listener notification support methods START here	 */	/**	 *  Adds a ChangeListener.	 *	 * @param  x  ChangeListener	 */	public void addChangeListener(ChangeListener x) {		if (changeListeners == null) {			changeListeners = new EventListenerList();		}		changeListeners.add(ChangeListener.class, x);		// bring it up to date with current state		x.stateChanged(new ChangeEvent(this));	}	/**	 *  Removes a ChangeListener.	 *	 * @param  x  ChangeListener	 */	public void removeChangeListener(ChangeListener x) {		changeListeners.remove(ChangeListener.class, x);	}	/**	 *  Notifies registered listeners of certain changes that have occurred in this	 *  model.	 *	 * @param  source  Description of the Parameter	 */	public void fireChange(Object source) {		// logger.debug("Firering change");		// Create the event:		ChangeEvent c = new ChangeEvent(source);		// Get the listener list		if (changeListeners == null) {			changeListeners = new EventListenerList();		}		Object[] listeners = changeListeners.getListenerList();		// Process the listeners last to first		// List is in pairs, Class and instance		for (int i = listeners.length - 2; i >= 0; i -= 2) {			if (listeners[i] == ChangeListener.class) {				ChangeListener cl = (ChangeListener) listeners[i + 1];				cl.stateChanged(c);			}		}	}	/**	 *  Notifies registered listeners of certain changes that have occurred in this	 *  model.	 */	public void fireChange() {		fireChange(this);	}	/*	 *  Listener notification support methods END here	 */	/**	 *  Returns one of the status strings at the given position	 *	 * @param  position	 * @return the current status	 */	public String getStatus(int position) {		// return this.status[position];		String status = "";		// logger.debug("Getting status");		if (position == 0) {			// depict editing mode			status = controllerModel.getDrawModeString();		}		else if (position == 1) {			// depict bruto formula			IAtomContainer wholeModel = model.getBuilder().newAtomContainer();        	Iterator containers = ChemModelManipulator.getAllAtomContainers(model).iterator();        	while (containers.hasNext()) {        		wholeModel.add((IAtomContainer)containers.next());        	}			String formula = new MFAnalyser(wholeModel,true).getHTMLMolecularFormulaWithCharge();			int impliciths=0;			for(int i=0;i<wholeModel.getAtomCount();i++){				impliciths+=wholeModel.getAtom(i).getHydrogenCount();			}			status = "<html>" + formula + (impliciths==0 ? "" : " (of these "+impliciths+" Hs implicit)")+"</html>";		}		else if (position == 2) {			// depict brutto formula of the selected molecule or part of molecule			if (rendererModel.getSelectedPart() != null) {				IAtomContainer selectedPart = rendererModel.getSelectedPart();				String formula = new MFAnalyser(selectedPart,true).getHTMLMolecularFormulaWithCharge();				status = "<html>" + formula + "</html>";			}		}		return status;	}	/**	 *  Sets one of the status strings at the given position	 *	 * @param  status	 * @param  position	 */	public void setStatus(String status, int position) {		this.status[position] = status;	}	/**	 *  Sets a title for this model.	 *	 * @param  text  The string containing the title	 */	public void setTitle(String text) {		title = text;//        setLastAction("Title changed");//        fireChange();	}	/**	 *  returns the title of this model	 *	 * @return    the title of this model	 */	public String getTitle() {		return this.title;	}	/**	 * Returns true if the content of this model is modified since the last save.	 *	 * @return    The modified value	 */	public boolean isModified() {		return this.isModified;	}	/** Resets the state of this model to unmodified. */	public void resetIsModified() {		this.isModified = false;	}	/**	 * @return the generation date	 */	public String getGendate() {		return this.gendate;	}	/**	 * @param  gendate	 */	public void setGendate(String gendate) {		this.gendate = gendate;	}	/**	 * @return The Software value	 */	public String getSoftware() {		return this.software;	}	/**	 * @param  software	 */	public void setSoftware(String software) {		this.software = software;	}	/**	 * @return the author of this model	 */	public String getAuthor() {		return this.author;	}	/**	 * @param  author	 */	public void setAuthor(String author) {		this.author = author;	}	public void setChemModel(IChemModel chemModel) {		this.model = chemModel;		fireChange();	}		/**	 *  Returns a ChemModel for this JChemPaintModel	 *	 * @return the current ChemModel	 */	public IChemModel getChemModel() {		return model;	}	/**	 *  Returns the ControllerModel	 *	 * @return the current ControllerModel	 */	public Controller2DModel getControllerModel() {		return this.controllerModel;	}	/**	 *  Sets the ControllerModel	 *	 * @param  controllerModel	 */	public void setControllerModel(Controller2DModel controllerModel) {		this.controllerModel = controllerModel;	}	/**	 *  Returns the RendererModel	 *	 * @return the current Renderer2DModel	 */	public Renderer2DModel getRendererModel() {		return this.rendererModel;	}	/**	 *  Sets the RendererModel	 *	 * @param  rendererModel	 */	public void setRendererModel(Renderer2DModel rendererModel) {		this.rendererModel = rendererModel;	}	/**	 *  Method to notify this CDKChangeListener if something has changed in another	 *  object	 *	 * @param  e  The EventObject containing information on the nature and source of	 *      the event	 */	public void stateChanged(EventObject e) {		try {			// logger.debug("State Change: " + ac.toString());		} catch (Exception ex) {			System.out.println(ex.toString());			ex.printStackTrace();		}		fireChange(e.getSource());		isModified = true;	}	public String getLastAction() {		return lastAction;	}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久人人97超碰com| 日韩欧美123| 成人一道本在线| 国产精品一线二线三线| 精品一区二区三区久久久| 日本一不卡视频| 美女视频网站黄色亚洲| 欧美aaa在线| 精品一区二区三区在线播放视频| 美女国产一区二区| 国产成人精品免费| 99久久久国产精品| 色噜噜偷拍精品综合在线| 欧美私模裸体表演在线观看| 欧美日韩一区 二区 三区 久久精品| 欧美日韩中字一区| 精品国精品自拍自在线| 久久婷婷久久一区二区三区| 中文字幕高清一区| 亚洲最新视频在线播放| 日韩电影免费在线看| 韩国成人精品a∨在线观看| 成人少妇影院yyyy| 欧美视频精品在线| 精品国产区一区| 亚洲视频香蕉人妖| 三级成人在线视频| 国产99久久久国产精品免费看| 99久久婷婷国产综合精品| 欧美喷水一区二区| 国产精品久久看| 香蕉久久一区二区不卡无毒影院| 狠狠色狠狠色合久久伊人| 91免费视频大全| 日韩免费高清av| 亚洲人成精品久久久久| 日本亚洲一区二区| 99re热视频这里只精品| 日韩一区二区三区观看| 日韩伦理电影网| 久久国内精品视频| 91福利在线看| 中文字幕免费一区| 毛片不卡一区二区| 欧美无乱码久久久免费午夜一区| 久久久久久久久久久久久女国产乱 | 欧美性猛片xxxx免费看久爱| 精品成人一区二区三区四区| 亚洲激情五月婷婷| 国产一区高清在线| 91精品午夜视频| 美女国产一区二区三区| 91极品视觉盛宴| 国产免费成人在线视频| 麻豆免费看一区二区三区| 欧美影院一区二区| 国产精品久久久久永久免费观看 | 一区在线中文字幕| 久久国产人妖系列| 欧美在线不卡视频| 国产精品―色哟哟| 美脚の诱脚舐め脚责91| 欧美视频你懂的| 亚洲国产成人精品视频| 99久久精品国产一区二区三区| 26uuu精品一区二区| 精品一区二区成人精品| 欧美日韩国产经典色站一区二区三区| 中文字幕在线不卡视频| av午夜一区麻豆| 国产精品热久久久久夜色精品三区 | 中文字幕免费一区| 国产成a人亚洲| 久久理论电影网| 成人动漫在线一区| 国产丝袜美腿一区二区三区| 国产成人午夜精品5599| 国产日韩精品一区二区三区| 国产精品主播直播| 欧美激情中文不卡| 99re8在线精品视频免费播放| 中文字幕成人网| 91麻豆精品视频| 亚洲成av人片在线| 在线不卡中文字幕| 精品制服美女丁香| 久久久精品国产免费观看同学| 国产精品亚洲人在线观看| 国产欧美一区二区精品仙草咪| 丁香桃色午夜亚洲一区二区三区| 国产拍欧美日韩视频二区| 99国产欧美久久久精品| 亚洲激情图片qvod| 制服丝袜一区二区三区| 国产一区 二区 三区一级| 日韩一区在线播放| 欧美丝袜第三区| 久草精品在线观看| 中文字幕在线不卡视频| 欧美精品久久一区| 国产成人丝袜美腿| 亚洲自拍都市欧美小说| 精品黑人一区二区三区久久| 99久久精品免费看国产| 亚洲一级二级在线| 久久色成人在线| 欧美系列日韩一区| 国产一区二区网址| 亚洲18影院在线观看| 26uuu国产日韩综合| 在线精品视频一区二区三四| 国产在线精品一区二区不卡了| 亚洲免费在线视频| 精品国产污污免费网站入口| 日本大香伊一区二区三区| 国产呦萝稀缺另类资源| 亚洲综合精品久久| 国产欧美日韩在线观看| 欧美一区二区精品在线| 99re免费视频精品全部| 国产在线麻豆精品观看| 亚洲国产欧美在线人成| 国产三级三级三级精品8ⅰ区| 91久久精品一区二区三区| 国产九色精品成人porny| 日韩av在线免费观看不卡| 一区二区三区中文字幕精品精品 | 欧美另类久久久品| 99久久久精品| 成人一区二区三区| 精品一区二区综合| 亚洲成人先锋电影| 亚洲美女视频在线| 国产精品美女久久久久久久久| 日韩欧美一级二级三级| 欧美日韩视频专区在线播放| 成人高清视频在线| 高清久久久久久| 国产高清精品在线| 国产福利精品一区二区| 麻豆国产精品777777在线| 日韩福利视频导航| 婷婷六月综合网| 日韩综合小视频| 免费观看在线色综合| 日本午夜精品视频在线观看| 爽爽淫人综合网网站| 亚洲国产精品一区二区久久| 一二三四区精品视频| 一区二区三区加勒比av| 一区二区成人在线视频| 亚洲三级视频在线观看| 亚洲另类在线制服丝袜| 亚洲欧美日韩一区二区三区在线观看| 国产精品久久久久一区| 国产精品久久久久三级| 亚洲乱码日产精品bd| 亚洲国产综合在线| 偷拍一区二区三区四区| 青青草国产成人av片免费| 另类综合日韩欧美亚洲| 久久丁香综合五月国产三级网站| 激情综合五月天| 国产老女人精品毛片久久| 波多野结衣在线一区| 色婷婷av一区二区三区软件| 精品视频一区二区不卡| 日韩欧美国产wwwww| 亚洲国产精品高清| 一区二区三区加勒比av| 蜜臀精品一区二区三区在线观看 | 国产老妇另类xxxxx| av网站免费线看精品| 欧美在线免费观看视频| 精品久久久三级丝袜| 国产日韩精品一区| 亚洲国产精品一区二区www| 久久爱另类一区二区小说| 99精品视频一区| 日韩欧美亚洲国产另类| 国产精品美女视频| 日韩高清不卡在线| 国产乱码精品一区二区三区av | 欧美电视剧在线看免费| 国产精品日韩精品欧美在线| 亚洲成人三级小说| 国产乱码精品一区二区三区忘忧草 | 亚洲成人综合视频| 国产一区二三区好的| 在线影视一区二区三区| 精品国偷自产国产一区| 一区二区三区视频在线观看| 精品写真视频在线观看| 91福利在线看| 国产日韩欧美综合一区| 日本不卡视频在线观看| 色系网站成人免费| 久久免费电影网| 午夜精品123| 91热门视频在线观看|