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

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

?? rupscontroller.java

?? 處理PDF
?? JAVA
字號:
/*
 * $Id: RupsController.java 3244 2008-04-13 23:27:35Z xlv $
 *
 * Copyright 2007 Bruno Lowagie.
 *
 * This library 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.
 * 
 * This library 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 library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 */

package com.lowagie.rups.controller;

import java.awt.Component;
import java.awt.Dimension;
import java.io.File;
import java.io.IOException;
import java.util.Observable;

import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTabbedPane;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;

import com.lowagie.rups.io.FileChooserAction;
import com.lowagie.rups.io.FileCloseAction;
import com.lowagie.rups.model.PdfFile;
import com.lowagie.rups.view.Console;
import com.lowagie.rups.view.PageNavigationListener;
import com.lowagie.rups.view.RupsMenuBar;
import com.lowagie.rups.view.itext.treenodes.PdfObjectTreeNode;
import com.lowagie.rups.view.itext.treenodes.PdfTrailerTreeNode;
import com.lowagie.text.DocumentException;

/**
 * This class controls all the GUI components that are shown in
 * the Trapeze application: the menu bar, the panels,...
 */
public class RupsController extends Observable
	implements TreeSelectionListener, PageNavigationListener {
	
	// member variables
	
	/* file */
	/** The Pdf file that is currently open in the application. */
	protected PdfFile pdfFile;

	/* main components */
	/** The JMenuBar for the Trapeze application. */
	protected RupsMenuBar menuBar;
	/** Contains all other components: the page panel, the outline tree, etc. */
	protected JSplitPane masterComponent;
	
	/* Other controllers */
	/** Object with the GUI components for SUN's PDF Renderer. */
	protected PdfRendererController renderer;
	/** Object with the GUI components for iText. */
	protected PdfReaderController reader;
	
	// constructor
	/**
	 * Constructs the GUI components of the Trapeze application.
	 */
	public RupsController(Dimension dimension) {
		// creating components and controllers
        menuBar = new RupsMenuBar(this);
        addObserver(menuBar);
		Console console = Console.getInstance();
		addObserver(console);
		renderer = new PdfRendererController(this);
		addObserver(renderer);
		reader = new PdfReaderController(this, this);
		addObserver(reader);

        // creating the master component
		masterComponent = new JSplitPane();
		masterComponent.setOrientation(JSplitPane.VERTICAL_SPLIT);
		masterComponent.setDividerLocation((int)(dimension.getHeight() * .70));
		masterComponent.setDividerSize(2);
		
		JSplitPane content = new JSplitPane();
		masterComponent.add(content, JSplitPane.TOP);
		JSplitPane info = new JSplitPane();
		masterComponent.add(info, JSplitPane.BOTTOM);
		
		content.setOrientation(JSplitPane.HORIZONTAL_SPLIT);
		content.setDividerLocation((int)(dimension.getWidth() * .75));
		content.setDividerSize(1);
		
		JSplitPane viewers = new JSplitPane();
        content.add(viewers, JSplitPane.LEFT);
		content.add(reader.getNavigationTabs(), JSplitPane.RIGHT);

		viewers.setOrientation(JSplitPane.HORIZONTAL_SPLIT);
		viewers.setDividerLocation((int)(dimension.getWidth() * .35));
		viewers.setDividerSize(1);
		viewers.add(renderer, JSplitPane.RIGHT);
		viewers.add(RupsController.getScrollPane(reader.getPdfTree()), JSplitPane.LEFT);
        
		info.setDividerLocation((int) (dimension.getWidth() * .3));
		info.setDividerSize(1);
		info.add(reader.getObjectPanel(), JSplitPane.LEFT);
		JTabbedPane editorPane = reader.getEditorTabs();
		JScrollPane cons = RupsController.getScrollPane(console.getTextArea());
		editorPane.addTab("Console", null, cons, "Console window (System.out/System.err)");
		editorPane.setSelectedComponent(cons);
		info.add(editorPane, JSplitPane.RIGHT);
		
	}

	/** Getter for the menubar. */
	public RupsMenuBar getMenuBar() {
		return menuBar;
	}
	
	/** Getter for the master component. */
	public Component getMasterComponent() {
		return masterComponent;
	}

	// Observable
	
	/**
	 * @see java.util.Observable#notifyObservers(java.lang.Object)
	 */
	@Override
	public void notifyObservers(Object obj) {
		if (obj instanceof FileChooserAction) {
			File file = ((FileChooserAction)obj).getFile();
			try {
				pdfFile = new PdfFile(file);
				setChanged();
				super.notifyObservers(RupsMenuBar.OPEN);
				renderer.startPageLoader(pdfFile);
				reader.startObjectLoader(pdfFile);
			}
			catch(IOException ioe) {
				JOptionPane.showMessageDialog(masterComponent, ioe.getMessage(), "Dialog", JOptionPane.ERROR_MESSAGE);
			}
			catch (DocumentException de) {
				JOptionPane.showMessageDialog(masterComponent, de.getMessage(), "Dialog", JOptionPane.ERROR_MESSAGE);
			}
			return;
		}
		if (obj instanceof FileCloseAction) {
			pdfFile = null;
			setChanged();
			super.notifyObservers(RupsMenuBar.CLOSE);
			return;
		}
	}

	// tree selection
	
	/**
	 * @see javax.swing.event.TreeSelectionListener#valueChanged(javax.swing.event.TreeSelectionEvent)
	 */
	public void valueChanged(TreeSelectionEvent evt) {
		Object selectednode = reader.getPdfTree().getLastSelectedPathComponent();
		if (selectednode instanceof PdfTrailerTreeNode) {
			menuBar.update(this, RupsMenuBar.FILE_MENU);
			return;
		}
		if (selectednode instanceof PdfObjectTreeNode) {
			reader.update(this, selectednode);
		}
	}

	// page navigation
	
	/**
	 * @see com.lowagie.rups.view.PageNavigationListener#getCurrentPageNumber()
	 */
	public int getCurrentPageNumber() {
		return renderer.getCurrentPageNumber();
	}

	/**
	 * @see com.lowagie.rups.view.PageNavigationListener#getTotalNumberOfPages()
	 */
	public int getTotalNumberOfPages() {
		return renderer.getTotalNumberOfPages();
	}
	
	/**
	 * @see com.lowagie.rups.view.PageNavigationListener#gotoFirstPage()
	 */
	public int gotoFirstPage() {
		return gotoPage(1);
	}

	/**
	 * @see com.lowagie.rups.view.PageNavigationListener#gotoPreviousPage()
	 */
	public int gotoPreviousPage() {
		return gotoPage(getCurrentPageNumber() - 1);
	}

	/**
	 * @see com.lowagie.rups.view.PageNavigationListener#gotoPage(int)
	 */
	public int gotoPage(int pageNumber) {
		pageNumber = renderer.gotoPage(pageNumber);
		reader.gotoPage(pageNumber);
		return pageNumber;
	}
	
	/**
	 * @see com.lowagie.rups.view.PageNavigationListener#gotoNextPage()
	 */
	public int gotoNextPage() {
		return gotoPage(getCurrentPageNumber() + 1);
	}

	/**
	 * @see com.lowagie.rups.view.PageNavigationListener#gotoLastPage()
	 */
	public int gotoLastPage() {
		return gotoPage(getTotalNumberOfPages());
	}

	/**
	 * Adds a component to a ScrollPane.
	 * @param	component	the component that has to be scrollable
	 * @return	a JScrollPane
	 * @since 2.1.0	 */
	public static JScrollPane getScrollPane(Component component) {
		JScrollPane scrollpane = new JScrollPane();
		scrollpane.setViewportView(component);
		return scrollpane;
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩免费电影| 91福利视频在线| 精品日本一线二线三线不卡| 午夜一区二区三区在线观看| 91视频在线看| 亚洲人吸女人奶水| 99久久精品国产一区| 国产婷婷一区二区| 国产91富婆露脸刺激对白| 欧美精品一区视频| 经典三级在线一区| 久久综合一区二区| 另类专区欧美蜜桃臀第一页| 欧美一区二区人人喊爽| 蜜臀va亚洲va欧美va天堂 | 欧美三级视频在线| 亚洲成年人网站在线观看| 色婷婷av一区二区三区大白胸 | 欧美精品一区二区在线播放| 美女在线观看视频一区二区| 日韩精品中午字幕| 国产在线精品一区二区不卡了| 精品国产乱码久久久久久夜甘婷婷 | 久久精品人人爽人人爽| 成人av在线播放网站| 国产成人免费在线视频| 国产精品免费视频网站| 在线观看一区日韩| 日本欧美韩国一区三区| 久久嫩草精品久久久精品一| 国产成人自拍高清视频在线免费播放| 国产日产欧美一区二区三区| 久久欧美一区二区| 不卡视频一二三| 免费视频最近日韩| 日本一区二区成人| 欧美视频中文字幕| 国产成人鲁色资源国产91色综| 一区二区三区在线播放| 久久影院午夜片一区| 色噜噜狠狠成人网p站| 韩国一区二区视频| 亚洲图片欧美综合| 国产欧美日韩在线视频| 这里只有精品免费| 91麻豆成人久久精品二区三区| 精品一区二区成人精品| 亚洲综合丝袜美腿| 欧美国产一区视频在线观看| 这里只有精品电影| 精品婷婷伊人一区三区三| 成人丝袜视频网| 国产美女精品人人做人人爽| 奇米一区二区三区| 亚洲电影中文字幕在线观看| 欧美日精品一区视频| 丰满白嫩尤物一区二区| 精品无人区卡一卡二卡三乱码免费卡 | 国产原创一区二区三区| 日韩在线一二三区| 亚洲国产中文字幕| 一区二区三区四区五区视频在线观看 | 高清在线不卡av| 国产精品自拍三区| 国产一区二区三区香蕉| 狠狠色丁香久久婷婷综合_中| 欧美96一区二区免费视频| 日韩黄色免费网站| 蜜桃av噜噜一区| 久久www免费人成看片高清| 老司机一区二区| 毛片av一区二区三区| 精品一区二区三区欧美| 国产不卡免费视频| 色综合网色综合| 在线观看三级视频欧美| 欧美午夜电影在线播放| 欧美色精品天天在线观看视频| 6080日韩午夜伦伦午夜伦| av影院午夜一区| 一本色道综合亚洲| 欧美精品久久99| 欧美一区二区三区四区在线观看 | 亚洲成av人影院| 国产伦精一区二区三区| 国产成a人亚洲精| 色国产精品一区在线观看| 欧美日韩不卡视频| 久久久激情视频| 玉足女爽爽91| 久久激情五月激情| av一二三不卡影片| 日韩欧美激情四射| 日韩伦理av电影| 美女被吸乳得到大胸91| av电影天堂一区二区在线| 一区二区三区四区在线免费观看| 久久丁香综合五月国产三级网站| 99精品桃花视频在线观看| 日韩一区二区三区四区五区六区| 中文字幕一区二区三区精华液 | 国产精品视频一二三| 午夜激情一区二区三区| 99热精品一区二区| 2023国产一二三区日本精品2022| 亚洲精品免费一二三区| 国产成人免费视频网站高清观看视频| 欧美少妇性性性| 亚洲色图欧洲色图婷婷| 国产在线观看免费一区| 欧美精品99久久久**| 亚洲日本在线观看| 国产91清纯白嫩初高中在线观看| 91精品国产一区二区三区| 亚洲精品美腿丝袜| av中文字幕一区| 国产精品丝袜久久久久久app| 美洲天堂一区二卡三卡四卡视频| 在线观看网站黄不卡| **网站欧美大片在线观看| 成人网在线免费视频| 国产清纯美女被跳蛋高潮一区二区久久w | 欧美日韩一区久久| 一区二区三区在线观看动漫| av一本久道久久综合久久鬼色| 国产精品麻豆网站| 99久久久国产精品免费蜜臀| 国产精品国产自产拍高清av| 粉嫩一区二区三区在线看| 国产精品护士白丝一区av| 99视频热这里只有精品免费| 国产精品入口麻豆原神| av成人免费在线| 亚洲一区二区影院| 欧美一区二区久久久| 久久99蜜桃精品| 久久综合九色综合97_久久久| 国产一区在线精品| 中文字幕日本乱码精品影院| 国产精品一品二品| 久久免费电影网| 盗摄精品av一区二区三区| 中文字幕一区二区三区色视频| 色8久久精品久久久久久蜜| 午夜精品久久一牛影视| 久久久五月婷婷| 日本乱人伦一区| 久久电影网站中文字幕| 国产精品看片你懂得| 欧美撒尿777hd撒尿| 国产精品一二三四区| 亚洲精选一二三| 欧美变态凌虐bdsm| 色综合天天综合色综合av| 天天影视涩香欲综合网| 日本一区二区三区在线观看| 欧美性生交片4| 国产九九视频一区二区三区| 亚洲激情六月丁香| 久久久久九九视频| 欧美人牲a欧美精品| av成人免费在线| 紧缚奴在线一区二区三区| 亚洲一区二区三区四区在线观看 | 精品对白一区国产伦| 91免费小视频| 国产成人在线网站| 日韩av在线播放中文字幕| 亚洲日穴在线视频| 国产精品视频一二| 日韩欧美一级二级| 欧美精品电影在线播放| 欧美色图一区二区三区| 国产99久久久精品| 极品尤物av久久免费看| 久久国产精品区| 日韩av中文字幕一区二区| 亚洲香蕉伊在人在线观| 亚洲人精品一区| 亚洲码国产岛国毛片在线| 国产精品久久久久久久久搜平片 | 欧美精品在线观看播放| 欧美性色欧美a在线播放| 色素色在线综合| 欧美色综合网站| 欧美一二区视频| 日韩一二三区不卡| 日韩欧美一二三区| 久久综合久久综合久久| 精品播放一区二区| 久久精品人人做人人爽97| 国产婷婷一区二区| 国产精品理论片| 一区二区三区视频在线看| 午夜精品久久久久久久99樱桃| 夜色激情一区二区| 日本视频免费一区| 国产一区二区免费视频| jlzzjlzz亚洲日本少妇| 欧美系列亚洲系列|