*/
		public void mouseClicked(MouseEvent e) {
			
			if (animationTimer != null && animationTimer.isRunning()) {
				return;
			}
			else if (moveTimer != null && moveTimer.isRunning()) {
				return;
			}
			
			// 左ボタンの場合
			if ( SwingUtilities.isLeftMouseButton(e) ) {
				
				if (recNum == 0) {
					return;
				}
				
				// クリック間隔算出
				long interSec = (e.getWhen() - lastClickedTime);
				lastClickedTime = e.getWhen();
				
				// ダブルクリックの場合（クリック間隔280ミリ秒以内）
				if(interSec <= 280){
					
					// 拡大処理
					fromPos = toPos = null;
					initRange(false);
					
					// スペクトル移動ボタンの使用を制限
					leftMostBtn.setEnabled(false);
					leftBtn.setEnabled(false);
					rightBtn.setEnabled(false);
					rightMostBtn.setEnabled(false);
				}
				// シングルクリックの場合（クリック間隔281ミリ秒以上）
				else {
					
					Point clickPoint = e.getPoint();			// クリックポイント
					
					int tmpMarginTop = 0;
					int tmpMarginRight = 0;
					
					int baseX = 0;			// x軸とy軸の交点のx座標
					int baseY = 0;			// x軸とy軸の交点のy座標

					PackageRecData recData = null;
					
					TreeSet<Double> tmpClickMzList = new TreeSet<Double>();
					
					for (int i=0; i<recNum; i++) {
						
						recData = specData.getRecInfo(i);
						
						baseX = MARGIN + (recNum-1-i) * moveXPoint;
						baseY = height - MARGIN - (recNum-1-i) * moveYPoint;
						
						tmpMarginTop = marginTop + (i * moveYPoint);
						tmpMarginRight = marginRight + (i * moveXPoint);
						if (tmpMarginTop > baseY) {
							tmpMarginTop = baseY;
						}
						if (width - tmpMarginRight < baseX) {
							tmpMarginRight = (width - baseX > 0) ? (width - baseX) : 0;
						}
						
						int step = stepCalc((int)massRange);
						int start = (step - (int)massStart % step) % step;
						
						// ピークがない場合
						if ( recData.getPeakNum() == 0 ) {
							continue;
						}
						
						int end, its, x, y, w;
						double mz;
						start = recData.getIndex(massStart);
						end = recData.getIndex(massStart + massRange);
						for (int j=start; j<end; j++) {
							mz = recData.getMz(j);
							its = recData.getIntensity(j);
							
							x = baseX + (int)((mz - massStart) * xscale) - (int)Math.floor(xscale / 8);
							y = baseY - (int)(its * yscale);
							w = (int)(xscale / 8);
							
							// 描画パラメータ（幅）調整
							if (w < 2) {
								w = 2;
							}
							else if (w < 3) {
								w = 3;
							}
							
							// y軸より左側には描画しないように調整
							if(baseX > x) {
								w = (w - (baseX - x) > 0) ? (w - (baseX - x)) : 1;
								x = baseX + 1;
							}
							
							// クリックした場所が（X/Y座標）がPeakの描画エリアに含まれている場合
							if (clickPoint.x >= x 
									&& clickPoint.x <= (x + w) 
									&& clickPoint.y >= y
									&& clickPoint.y <= baseY) {
								
								tmpClickMzList.add(mz);
							}
						}	// end for
					}	// end for
					
					
					// クリックポイントにPeakが1つの場合
					if (tmpClickMzList.size() == 1) {
						
						String mz = String.valueOf(tmpClickMzList.iterator().next());
						
						if (!specData.containsSelectedPeak(mz)) {
							if (specData.getSelectedPeakNum() < MassBankCommon.PEAK_SEARCH_PARAM_NUM) {
								// 選択済ピークの保持
								specData.addSelectedPeakList(mz);
								// 選択状態を設定
								for (int i=0; i<recNum; i++) {
									recData = specData.getRecInfo(i);
									recData.setSelectPeak(mz, true);
								}
							}
							else {
								JOptionPane.showMessageDialog(
										SpectrumPlotPane.this,
										" m/z of " + MassBankCommon.PEAK_SEARCH_PARAM_NUM + " peak or more cannot be selected.&nbsp;",
										"Warning",
										JOptionPane.WARNING_MESSAGE);
							}
						}
						else {
							// 選択済ピークの保持解除
							specData.removeSelectedPeakList(mz);
							// 選択状態を解除
							for (int i=0; i<recNum; i++) {
								recData = specData.getRecInfo(i);
								recData.setSelectPeak(mz, false);
							}
						}
						setStatusLabel();
						PackageViewPanel.this.repaint();
					}
					// クリックポイントにPeakが2つ以上の場合
					else if (tmpClickMzList.size() >= 2) {
						// ポップアップメニューインスタンス生成
						selectPopup = new JPopupMenu();
						JMenuItem item = null;
						
						Iterator<Double> ite = tmpClickMzList.iterator();
						while (ite.hasNext()) {
							String mz = String.valueOf(ite.next());
							item = new JMenuItem(mz);
							selectPopup.add(item);
							item.addActionListener(new SelectMZPopupListener(mz));
							
							if (specData.getSelectedPeakNum() >= MassBankCommon.PEAK_SEARCH_PARAM_NUM
									&& !specData.containsSelectedPeak(mz)) {
								// Peak選択数がMAXの場合、選択済みPeak以外は選択不可を設定
								item.setEnabled(false);
							}
						}
						
						// ポップアップメニュー表示
						selectPopup.show( e.getComponent(), e.getX(), e.getY() );
					}
				}
			}
		}