📄 xpreviewpane.java
字号:
/****************************************************************
* XBrowser - eXtended web Browser *
* *
* Copyright (c) 2000-2001 Armond Avanes *
* Refer to ReadMe & License files for more information *
* *
* *
* By: Armond Avanes *
* Armond555@yahoo.com & Armond333@yahoo.com *
* http://xbrowser.sourceforge.net/ *
*****************************************************************/
package xbrowser.widgets;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.awt.print.*;
import javax.swing.*;
import javax.swing.event.*;
import xbrowser.*;
import xbrowser.doc.*;
import xbrowser.util.*;
import xbrowser.widgets.event.*;
public class XPreviewPane extends JPanel implements XScaleListener
{
public XPreviewPane(XDocument doc)
{
JToolBar tlbMain = new JToolBar();
document = doc;
tlbMain.setFloatable(false);
tlbMain.add( XRepository.getComponentBuilder().buildToolbarButton(new ZoomInAction()) );
tlbMain.add( XRepository.getComponentBuilder().buildToolbarButton(new ZoomOutAction()) );
tlbMain.add( XRepository.getComponentBuilder().buildToolbarButton(new PrintAction()) );
tlbMain.add( XRepository.getComponentBuilder().buildToolbarButton(new CloseAction()) );
tlbMain.addSeparator();
tlbMain.add(cmbScale);
setLayout( new BorderLayout() );
add(tlbMain, BorderLayout.NORTH);
previewContainer = new XPreviewContainer(this);
add(new JScrollPane(previewContainer), BorderLayout.CENTER);
}
public void loadPreviews()
{
new Thread() {
public void run()
{
XPreviewPane.this.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
try
{
document.getRenderer().loadPreviews(previewContainer, 10);
}
catch( Exception e )
{
String title = XRepository.getResourceManager().getProperty(XPreviewPane.this, "Error");
JOptionPane.showMessageDialog(XBrowser.getMainFrame(), e.getMessage(), title, JOptionPane.ERROR_MESSAGE);
}
XPreviewPane.this.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
}
}.start();
}
public void scaleChanged(final int new_scale)
{
new Thread() {
public void run()
{
XPreviewPane.this.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
document.getRenderer().changePreviewScale(previewContainer, new_scale);
XPreviewPane.this.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
}
}.start();
}
public void zoomedIn()
{
int new_scale = cmbScale.getCurrentScale()*2;
cmbScale.getEditor().setItem(new_scale+" %");
scaleChanged(new_scale);
}
public void zoomedOut()
{
int new_scale = (int)cmbScale.getCurrentScale()/2;
if( new_scale<1 )
new_scale = 1;
cmbScale.getEditor().setItem(new_scale+" %");
scaleChanged(new_scale);
}
private class XScaleComboBox extends JComboBox implements ActionListener
{
public XScaleComboBox(XScaleListener scale_listener)
{
super( new String[]{ "10 %", "25 %", "50 %", "75 %", "100 %" } );
scaleListener = scale_listener;
addActionListener(this);
getEditor().addActionListener(this);
setMaximumSize(getPreferredSize());
setEditable(true);
}
public int getCurrentScale()
{
String str = getEditor().getItem().toString();
if( str.endsWith("%") )
str = str.substring(0, str.length()-1);
str = str.trim();
int cur_scale;
try
{
cur_scale = (int)Integer.parseInt(str);
if( cur_scale<1 )
cur_scale = 1;
}
catch( Exception e )
{
str = getSelectedItem().toString();
if( str.endsWith("%") )
str = str.substring(0, str.length()-1);
str = str.trim();
try
{
cur_scale = (int)Integer.parseInt(str);
}
catch( Exception ex )
{
cur_scale = 1;
}
}
return cur_scale;
}
public void actionPerformed(ActionEvent e)
{
int cur_scale = getCurrentScale();
getEditor().setItem(cur_scale+" %");
scaleListener.scaleChanged(cur_scale);
}
// Attributes:
private XScaleListener scaleListener;
}
private class ZoomInAction extends XDefaultAction
{
public ZoomInAction()
{
super(XPreviewPane.this, "ZoomIn", null);
}
public void actionPerformed(ActionEvent e)
{
previewContainer.setZoomMode(XProjectConstants.ZOOM_IN);
zoomedIn();
}
}
private class ZoomOutAction extends XDefaultAction
{
public ZoomOutAction()
{
super(XPreviewPane.this, "ZoomOut", null);
}
public void actionPerformed(ActionEvent e)
{
previewContainer.setZoomMode(XProjectConstants.ZOOM_OUT);
zoomedOut();
}
}
private class PrintAction extends XDefaultAction
{
public PrintAction()
{
super(XPreviewPane.this, "Print", null);
}
public void actionPerformed(ActionEvent e)
{
document.printDocumentImmediately();
}
}
private class CloseAction extends XDefaultAction
{
public CloseAction()
{
super(XPreviewPane.this, "Stop", null);
}
public void actionPerformed(ActionEvent e)
{
document.getRenderer().stopPrinting();
}
}
// Attributes:
private int pageWidth;
private int pageHeight;
private XDocument document;
private XPreviewContainer previewContainer;
private XScaleComboBox cmbScale = new XScaleComboBox(this);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -