Topic: color4j |
Print this page |
1.color4j | Copy to clipboard |
Posted by: Jove Posted on: 2004-03-17 14:03 Jute的code标签不太好看,用这个软件会稍微好一点 下载地址 其中包含源文件,允许任何形式的修改和传播 Quick Start: 自定义显示风格请用文本编辑器打开style.cfg 产生的代码如: 001 package jove.color4j; 002 003 import java.awt.*; 004 import java.awt.datatransfer.*; 005 import java.awt.event.*; 006 007 import javax.swing.*; 008 import javax.swing.event.*; 009 010 import snoozesoft.systray4j.*; 011 012 /** 013 * @author Jove 014 */ 015 public class Color4jGUI extends JFrame implements SysTrayMenuListener { 016 017 public static void main(String[] args) { 018 try { 019 UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 020 } catch (Exception e) {} 021 022 new Color4jGUI().show(); 023 } 024 025 private static void showMessage(String msg) { 026 JFrame dummy = new JFrame("Color4j"); 027 dummy.setLocation(400, 300); 028 dummy.show(); 029 JOptionPane.showMessageDialog(dummy, msg); 030 dummy.dispose(); 031 } 032 private CheckableMenuItem checkMenuUbb, checkMenuAnsi; 033 ... [readme] color4j,曾用名java2ansi,java2ubb 作用: 把Java代码(其实也可以是其他语言的代码)转化为有字体信息的UBB或ANSI 其中UBB就是很多Web论坛使用的伪html代码,如【b】【color=red】 red 【/color】【/b】 而ANSI则是BBS等Term中的特殊控制字,如*[1;31m red *[m 算法来源: JR-Lib javaresearch.org的一个开源项目 Java语法素材来源: editplus第三方语法高亮包 下载地址: 解压后直接运行exe即可 其中包含源文件,允许任何形式的修改和传播 使用方法: 运行后出现窗口可以输入Java代码,按F9将输入框内的代码转换为对应的UBB或ANSI码 保存到系统剪贴板,按F8可以从剪贴板读入代码并作转换 同时提供系统托盘区的执行方式 自定义显示风格请用文本编辑器打开style.cfg Change Log: 2004-3-17 考虑到易用性,专为Windows设计。(不过*NIX上应该也能用,需要另外下载systray的so) 把ANSI和UBB的式样从硬编码改为读取配置文件 专为cjsdn改进UBB的样式,主要是去处黑色的【code】标签,使用Editplus的配色方案 去处生成文件锁的功能,依赖exe4j来达到系统单实例 去处转换完成后的提示框,在转换期间Title为<converting> 2004-3-12 最小化到系统托盘区 F9从文本框读入代码,F8从系统剪贴板读入 产生临时文件,防止运行多个实例 重构代码,增加StyleSet抽象类 2004-3-10 Initial Release color4j-20040317-win.zip (196.24k) |
2.Re:color4j [Re: Jove] | Copy to clipboard |
Posted by: Jove Posted on: 2004-03-17 14:04 1.png (20.72k) |
3.Re:color4j [Re: Jove] | Copy to clipboard |
Posted by: dapan Posted on: 2004-03-17 14:59 看起来很美! 不过代码加上行号,在复制时还要处理一下,稍有麻烦。 有相应的设置吗? ^_^ |
4.Re:color4j [Re: dapan] | Copy to clipboard |
Posted by: Jove Posted on: 2004-03-17 15:08 ubb.line.num.format=[ color=cccccc]000[/color]' ' 在style.cfg中,把这行注释掉,就不会产生行号 自定义行号的显示样式也是这个地方设置 |
5.Re:color4j [Re: Jove] | Copy to clipboard |
Posted by: rainman Posted on: 2004-03-17 15:14 看样子Jute要直接支持这个语法加亮了 |
6.Re:color4j [Re: rainman] | Copy to clipboard |
Posted by: Jove Posted on: 2004-03-17 15:19 不过或许会增加系统负担 如果要增加,建议作为[java][/java]标签,保留原来的code标签。因为有时我们会贴xml等别的代码 btw,rainman什么时候有空能修改一下jute上swf显示的那段代码吗 就是上次说的问题, 目前swf的宽度和长度是订死的550和400, 改成和<param>标签内的数字一样就可以了 上次用viewlet做了个demo,上传后发现显示尺寸不对.. //bow |
7.Re:color4j [Re: Jove] | Copy to clipboard |
Posted by: rainman Posted on: 2004-03-17 15:46 新版本改过了,cjsdn还未更新过。 |
8.Re:color4j [Re: Jove] | Copy to clipboard |
Posted by: freeman_z Posted on: 2004-03-25 04:30 001 package jove.color4j; 002 003 import java.awt.*; 004 import java.awt.datatransfer.*; 005 import java.awt.event.*; 006 007 import javax.swing.*; 008 import javax.swing.event.*; 009 010 import snoozesoft.systray4j.*; 011 012 /** 013 * @author Jove 014 */ 015 public class Color4jGUI extends JFrame implements SysTrayMenuListener { 016 017 public static void main(String[] args) { 018 /* 019 使用exe4j来保证单实例 020 File f = new File("file.lock"); 021 if (f.exists()) { 022 showMessage("Warning: A instance has existed."); 023 System.exit(0); 024 } 025 try { 026 f.createNewFile(); 027 } catch (IOException e) { 028 e.printStackTrace(); 029 System.exit(1); 030 } 031 f.deleteOnExit(); 032 */ 033 try { 034 UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 035 } catch (Exception e) {} 036 037 new Color4jGUI().show(); 038 } 039 040 private static void showMessage(String msg) { 041 JFrame dummy = new JFrame("Color4j"); 042 dummy.setLocation(400, 300); 043 dummy.show(); 044 JOptionPane.showMessageDialog(dummy, msg); 045 dummy.dispose(); 046 } 047 private CheckableMenuItem checkMenuUbb, checkMenuAnsi; 048 private Color4j color4j; 049 private SysTrayMenuIcon icon; 050 private Color[] labelColor = { Color.RED, Color.BLUE }; 051 052 private String[] labelText = 053 { 054 " Press F9 to convert and save result to clipboard", 055 " Press F8 to read data from clipboard and convert" }; 056 private boolean labelTextFlag = true; 057 private SysTrayMenu menu; 058 private JRadioButton radioUbb, radioAnsi; 059 060 private Color4jGUI() { 061 super("Java Code Formatter"); 062 setBounds(100, 100, 500, 400); 063 addWindowListener(new WindowListener() { 064 public void windowActivated(WindowEvent e) {} 065 public void windowClosed(WindowEvent e) {} 066 public void windowClosing(WindowEvent e) { 067 //hide(); 068 dispose(); 069 System.exit(0); 070 } 071 public void windowDeactivated(WindowEvent e) {} 072 public void windowDeiconified(WindowEvent e) {} 073 public void windowIconified(WindowEvent e) { 074 hide(); 075 } 076 public void windowOpened(WindowEvent e) {} 077 }); 078 079 Container con = getContentPane(); 080 Box box = Box.createHorizontalBox(); 081 final JLabel label = new JLabel(labelText[0]); 082 label.setForeground(labelColor[0]); 083 box.add(label); 084 Timer timer = new Timer(5000, new ActionListener() { 085 public void actionPerformed(ActionEvent e) { 086 if (labelTextFlag) { 087 label.setText(labelText[1]); 088 label.setForeground(labelColor[1]); 089 } else { 090 label.setText(labelText[0]); 091 label.setForeground(labelColor[0]); 092 } 093 labelTextFlag = !labelTextFlag; 094 } 095 }); 096 timer.start(); 097 box.add(Box.createHorizontalGlue()); 098 radioUbb = new JRadioButton("UBB", true); 099 radioAnsi = new JRadioButton("ANSI"); 100 ChangeListener cListener = new ChangeListener() { 101 public void stateChanged(ChangeEvent e) { 102 boolean isUbb = radioUbb.isSelected(); 103 checkMenuUbb.setState(isUbb); 104 checkMenuAnsi.setState(!isUbb); 105 } 106 }; 107 radioUbb.addChangeListener(cListener); 108 radioAnsi.addChangeListener(cListener); 109 box.add(radioUbb); 110 box.add(radioAnsi); 111 box.add(Box.createHorizontalStrut(5)); 112 ButtonGroup group = new ButtonGroup(); 113 group.add(radioUbb); 114 group.add(radioAnsi); 115 con.add(box, BorderLayout.SOUTH); 116 final JTextArea textSource = new JTextArea(); 117 JScrollPane sp = new JScrollPane(textSource); 118 JPanel p = new JPanel(); 119 p.setLayout(new BorderLayout()); 120 p.setBorder(BorderFactory.createTitledBorder("Source Code")); 121 p.add(sp); 122 con.add(p); 123 color4j = new Color4j(); 124 KeyListener listener = new KeyAdapter() { 125 public void keyPressed(KeyEvent e) { 126 if (e.getKeyCode() == KeyEvent.VK_F9) { 127 convert(textSource.getText()); 128 } else if (e.getKeyCode() == KeyEvent.VK_F8) { 129 convertFromCB(); 130 } 131 } 132 }; 133 textSource.addKeyListener(listener); 134 radioAnsi.addKeyListener(listener); 135 radioUbb.addKeyListener(listener); 136 137 icon = new SysTrayMenuIcon(getClass().getResource("icon.ico")); 138 icon.addSysTrayMenuListener(this); 139 createMenu(); 140 } 141 142 private void convert(String code) { 143 String oldTitle=getTitle(); 144 setTitle(oldTitle+" <converting>"); 145 if (radioUbb.isSelected()) { 146 color4j.setStyleSet(StyleSet.UBB); 147 } else { 148 color4j.setStyleSet(StyleSet.ANSI); 149 } 150 code = color4j.convert(code); 151 Toolkit.getDefaultToolkit().getSystemClipboard().setContents( 152 new StringSelection(code), 153 null); 154 //不再显示Message 155 //showMessage("data have been sent to system clipboard."); 156 setTitle(oldTitle); 157 } 158 159 private void convertFromCB() { 160 Transferable clip = 161 Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null); 162 String code = null; 163 try { 164 code = (String) clip.getTransferData(DataFlavor.stringFlavor); 165 } catch (Exception e) { 166 e.printStackTrace(); 167 } 168 convert(code); 169 } 170 171 private void createMenu() { 172 // create an exit item 173 SysTrayMenuItem itemExit = new SysTrayMenuItem("Exit", "exit"); 174 itemExit.addSysTrayMenuListener(this); 175 176 // create an about item 177 SysTrayMenuItem itemAbout = new SysTrayMenuItem("About...", "about"); 178 itemAbout.addSysTrayMenuListener(this); 179 180 SysTrayMenuItem itemConvert = 181 new SysTrayMenuItem("Convert code from clipboard", "convert"); 182 itemConvert.addSysTrayMenuListener(this); 183 184 SubMenu subMenu = new SubMenu("Type"); 185 checkMenuUbb = new CheckableMenuItem("UBB", "ubb"); 186 checkMenuUbb.addSysTrayMenuListener(this); 187 checkMenuUbb.setState(true); 188 checkMenuAnsi = new CheckableMenuItem("Ansi", "ansi"); 189 checkMenuAnsi.addSysTrayMenuListener(this); 190 subMenu.addItem(checkMenuAnsi); 191 subMenu.addItem(checkMenuUbb); 192 193 menu = new SysTrayMenu(icon, "Color4j"); 194 menu.addItem(itemExit); 195 menu.addSeparator(); 196 menu.addItem(itemAbout); 197 menu.addSeparator(); 198 menu.addItem(itemConvert); 199 menu.addItem(subMenu); 200 } 201 202 public void iconLeftClicked(SysTrayMenuEvent e) { 203 if (isVisible()) { 204 hide(); 205 } else { 206 show(); 207 setState(Frame.NORMAL); 208 toFront(); 209 } 210 } 211 212 public void iconLeftDoubleClicked(SysTrayMenuEvent e) {} 213 214 public void menuItemSelected(SysTrayMenuEvent e) { 215 if (e.getActionCommand().equals("exit")) 216 System.exit(0); 217 else if (e.getActionCommand().equals("about")) { 218 JOptionPane.showMessageDialog( 219 this, 220 "Color4j. \nWith SysTray for Java v" + SysTrayMenu.VERSION); 221 } else if (e.getActionCommand().equals("ubb")) { 222 checkMenuUbb.setState(true); 223 checkMenuAnsi.setState(false); 224 radioUbb.setSelected(true); 225 } else if (e.getActionCommand().equals("ansi")) { 226 checkMenuUbb.setState(false); 227 checkMenuAnsi.setState(true); 228 radioAnsi.setSelected(true); 229 } else if (e.getActionCommand().equals("convert")) { 230 convertFromCB(); 231 } else 232 JOptionPane.showMessageDialog(this, e.getActionCommand()); 233 } 234 } |
9.Re:color4j [Re: freeman_z] | Copy to clipboard |
Posted by: nothing Posted on: 2004-03-25 05:31 COOL! |
10.Re:color4j [Re: Jove] | Copy to clipboard |
Posted by: Starcraft Posted on: 2004-04-11 12:13 感谢jove兄,学习中 |
11.Re:color4j [Re: Jove] | Copy to clipboard |
Posted by: alexyu2000 Posted on: 2004-04-13 09:06 首先我支持语法加亮显示,不过应该系统会有负担,不过这个功能能提升专业性,建议支持,不过我喜欢将JUTE代码显示改为这样,还有行数显示,挺方便的,听说rainman有这个意思,不知道进展的如何? Click here to open a new window |
12.Re:color4j [Re: Jove] | Copy to clipboard |
Posted by: 文夕 Posted on: 2004-04-22 19:58 001 public class HelloS 002 { 003 public static void main(String [] args) 004 { 005 System.out.println("asd"); 006 } 007 } |
13.Re:color4j [Re: 文夕] | Copy to clipboard |
Posted by: ditty Posted on: 2004-04-22 20:20 不错不错~~~
|
14.Re:color4j [Re: Jove] | Copy to clipboard |
Posted by: fnhufoz Posted on: 2004-05-22 00:05 不赖 |
15.Re:color4j [Re: Jove] | Copy to clipboard |
Posted by: littledeer1974 Posted on: 2005-01-06 12:39 一直很关注这个小软件,觉得很有意思,不知道最近有什么新消息没有? 顺便说一下,觉得界面还可以做的更容易操作一些 |
16.Re:color4j [Re: Jove] | Copy to clipboard |
Posted by: chenyajun5 Posted on: 2005-01-26 10:59 001 package com.cnjsp.cnjbb.mysql; 002 003 004 /** 005 * 点击量管理器 006 * 007 * @author Sager 008 */ 009 public class DbHitsManager { 010 protected final static int MESSAGE_HITS = 0; 011 012 private final static int HITS_COUNT = 1; 013 private Hits[] hits = null; 014 015 protected DbHitsManager() { 016 hits = new Hits[HITS_COUNT]; 017 hits[MESSAGE_HITS] = new MessageHits(); 018 } 019 public void addHit(int type, Object key) { 020 if (type >= 0 && type < HITS_COUNT) 021 hits[type].addHit(key); 022 } 023 } |
17.Re:color4j [Re: Jove] | Copy to clipboard |
Posted by: chenyajun5 Posted on: 2005-01-26 11:00 修改样式表,让保留字加粗。。 |
18.Re:color4j [Re: Jove] | Copy to clipboard |
Posted by: alexyu2000 Posted on: 2005-01-26 11:14 还有进展吗??看下jute最近的进展截图,ok? |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |