为JEdit设置墙纸(add wallpaper for jedit)

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

1). 前提(condition)

+ jedit4.2final

+ jdk 1.4

2). 步骤(steps)

1. add this at org.gjt.sp.jedit.textarea.TextAreaPainter

in method paintComponent(...)

after:

extensionMgr.paintScreenLineRange(textArea, gfx, firstInvalid,

lastInvalid, y, height);

add:

{ // paint wallpaper after all that should be paint

Rectangle rect = this.getVisibleRect();

Wallpaper.paintWallpaper(gfx, rect.x, rect.y, rect.width,

rect.width, this);

}

2. add in org.gjt.sp.jedit.textarea.JEditTextArea

// {{{ changeWallpaperDialog() method

// for change the wallpaper

/**

* Displays the 'changeWallpaperDialog' dialog box.

* @author neoedmund

*/

public void changeWallpaperDialog()

{

if (Wallpaper.changeWallpaper(this)){

repaint();

}

} //}}}

3. add new class org.gjt.sp.jedit.textarea.Wallpaper

/*

* Created on 2005-3-26

*/

package org.gjt.sp.jedit.textarea;

import java.awt.AlphaComposite;

import java.awt.Composite;

import java.awt.Graphics2D;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

import javax.imageio.ImageIO;

import javax.swing.JComponent;

import javax.swing.JFileChooser;

/**

* @author neoe

*/

public class Wallpaper {

static BufferedImage pic;

private static final String DEFALUT_IMG = "org/gjt/sp/jedit/icons/wallpaper.jpg";

static{

System.out.println("hello Wallpaper");

loadPic(ClassLoader

.getSystemResourceAsStream(DEFALUT_IMG));

}

static AlphaComposite alpha = AlphaComposite.getInstance(

AlphaComposite.SRC_OVER, 0.2f);

/**

* @param gfx

* @param width

* @param height

*/

public static void paintWallpaper(Graphics2D g, int cx, int cy, int width, int height, JComponent view) {

if (pic==null){

return;

}

int y = 0;

int w = pic.getWidth();

int h = pic.getHeight();

Composite old = g.getComposite();

g.setComposite(alpha);

while (true) {

int x = 0;

while (true) {

g.drawImage(pic, cx+x, cy+y, view);

x += w;

if (w <= 0 || x >= width) {

break;

}

}

y += h;

if (h <= 0 || y >= height) {

break;

}

}

g.setComposite(old);

}

/**

* @param in

*/

private static void loadPic(InputStream in) {

try {

pic = ImageIO.read(in);

} catch (IOException e) {

e.printStackTrace();

}

}

static File f;

/**

*

*/

public static boolean changeWallpaper(JComponent parent) {

JFileChooser jfc = new JFileChooser(f);

int returnVal = jfc.showOpenDialog(parent);

if (returnVal == JFileChooser.APPROVE_OPTION) {

f = jfc.getSelectedFile();

try {

loadPic(new FileInputStream(f));

return true;

} catch (IOException e1) {

e1.printStackTrace();

}

}

return false;

}

}

4. copy default wallpaper whatever you like into org/gjt/sp/jedit/icons/wallpaper.jpg

5. add this into org\gjt\sp\jedit\actions.xml

<ACTION NAME="change-wallpaper">

<CODE>

textArea.changeWallpaperDialog();

</CODE>

</ACTION>

6. change org\gjt\sp\jedit\jedit_gui.props, add "change-wallpaper" in tool bar

#{{{ Tool bar

view.toolbar=new-file open-file close-buffer save - print page-setup - undo redo cut copy paste - find find-next - new-view unsplit split-horizontal split-vertical - buffer-options global-options - plugin-manager - help - change-wallpaper

...

...

...

change-wallpaper.icon=Help.png

....

....

change-wallpaper.label=Change $Wallpaper

7. last step, rebuild source, restart jedit, have fun.

notes: I don`t know if it is something slowdown, but I like it :)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航