diff --git a/mozilla/grendel/composition/CompositionPanel.java b/mozilla/grendel/composition/CompositionPanel.java index 0b5a9fae899..793b7bf08ab 100644 --- a/mozilla/grendel/composition/CompositionPanel.java +++ b/mozilla/grendel/composition/CompositionPanel.java @@ -864,24 +864,20 @@ public class CompositionPanel extends GeneralPanel { GrendelToolBar toolBar = new GrendelToolBar(); - addToolbarButton(toolBar, new SendNow(), + toolBar.addButton( new SendNow(), "send", "Send", "Send this message"); - addToolbarButton(toolBar, new QuoteOriginalText(), - "quote", "Quote", "Quote the previous document"); - addToolbarButton(toolBar, new SelectAddresses(), + toolBar.addButton( new SelectAddresses(), "address", "Address", "Address this message"); - addToolbarButton(toolBar, new AttachFile(), + toolBar.addButton( new AttachFile(), "attach", "Attach", "Include an attachment"); - addToolbarButton(toolBar, null, + toolBar.addButton( null, "spelling", "Spelling", "Check Spelling"); - addToolbarButton(toolBar, new SaveDraft(), + toolBar.addButton( new SaveDraft(), "save", "Save", "Save this message as a draft"); - addToolbarButton(toolBar, null, - "security", "Security", "Show security Information"); - addToolbarButton(toolBar, null, + toolBar.addButton( null, + "print", "Print", "Print this message"); + toolBar.addButton( null, "stop", "Stop", "Stop the current Transfer (ESC)" ); - //addToolbarButton(toolBar, new AddSignatureAction(), - // "signature", "Add the signature of the current personality" ); return toolBar; } diff --git a/mozilla/grendel/ui/GeneralPanel.java b/mozilla/grendel/ui/GeneralPanel.java index 4ca90c93dac..8854b73336b 100644 --- a/mozilla/grendel/ui/GeneralPanel.java +++ b/mozilla/grendel/ui/GeneralPanel.java @@ -121,23 +121,21 @@ public class GeneralPanel extends JPanel { res = new GrendelToolBar(); // res.setLayout(new ToolBarLayout()); - ResourceBundle resources = ResourceBundle.getBundle(fResourceBase + ".Menus"); - String toolbar = resources.getString(aToolbar); + ResourceBundle toolbarresources = ResourceBundle.getBundle(fResourceBase + ".Toolbar"); + ResourceBundle menuresources = ResourceBundle.getBundle(fResourceBase + ".Menus"); + String toolbar = menuresources.getString(aToolbar); StringTokenizer tokens = new StringTokenizer(toolbar, " ", false); while (tokens.hasMoreTokens()) { String token = tokens.nextToken(); if (DEBUG) { System.out.println("Local token = " + token); } - JButton button = makeToolbarButton(token); UIAction action = (UIAction)commands.get(token); - - if (action != null) { - button.addActionListener(action); - } else { - button.setEnabled(false); - } - res.add(button); + String icon = toolbarresources.getString(token + "Icon"); + String label = toolbarresources.getString(token + "Label"); + String tooltip = toolbarresources.getString(token + "Tooltip"); + + res.addButton(action, icon, label, tooltip); } } catch (MissingResourceException e) { System.err.println(e); diff --git a/mozilla/grendel/ui/Toolbar.properties b/mozilla/grendel/ui/Toolbar.properties index effc93902ad..90c0cdf332d 100644 --- a/mozilla/grendel/ui/Toolbar.properties +++ b/mozilla/grendel/ui/Toolbar.properties @@ -16,12 +16,30 @@ # (C) 1999 Edwin Woudt. All Rights Reserved. # -msgGetNew=Get Msg -msgNew=New Msg -msgReply=Reply -msgForward=Forward -markAllRead=Mark Rd -print=Print -msgDelete=Delete -stop=Stop +msgGetNewLabel=Get Msg +msgNewLabel=New Msg +msgReplyLabel=Reply +msgForwardLabel=Forward +markAllReadLabel=Mark Rd +printLabel=Print +msgDeleteLabel=Delete +stopLabel=Stop + +msgGetNewIcon=getmsg +msgNewIcon=newmsg +msgReplyIcon=reply +msgForwardIcon=forward +markAllReadIcon=markallread +printIcon=print +msgDeleteIcon=delete +stopIcon=stop + +msgGetNewTooltip=Get new messages +msgNewTooltip=Compose a new message +msgReplyTooltip=Reply +msgForwardTooltip=Forward +markAllReadTooltip=Mark all messages read +printTooltip=Print this message +msgDeleteTooltip=Delete this message +stopTooltip=Stop the current action (ESC) diff --git a/mozilla/grendel/widgets/GrendelToolBar.java b/mozilla/grendel/widgets/GrendelToolBar.java index f43dd951cdd..2b61f38ba88 100644 --- a/mozilla/grendel/widgets/GrendelToolBar.java +++ b/mozilla/grendel/widgets/GrendelToolBar.java @@ -16,15 +16,25 @@ * . Portions created by Jeff Galyan are * Copyright (C) 1997 Jeff Galyan. All Rights Reserved. * + * Contributors: Edwin Woudt */ package grendel.widgets; +import java.awt.Dimension; +import java.awt.Font; import java.awt.GridBagConstraints; +import java.awt.Insets; +import java.net.URL; + +import javax.swing.BorderFactory; +import javax.swing.ImageIcon; import javax.swing.JToolBar; +import javax.swing.JButton; import grendel.ui.ToolBarLayout; +import grendel.ui.UIAction; import grendel.widgets.Animation; import grendel.widgets.Spring; @@ -44,5 +54,56 @@ public class GrendelToolBar extends JToolBar { return layout.createSpring(); } + public void addButton(UIAction aActionListener, + String aImageName, + String aText, + String aToolTip) { + JButton b = new JButton(); + + b.setHorizontalTextPosition(JButton.CENTER); + b.setVerticalTextPosition(JButton.BOTTOM); + Font f=b.getFont(); + Font nf=new Font(f.getName(), Font.PLAIN, f.getSize()-1); + b.setFont(nf); + b.setText(aText); + + b.setRolloverEnabled(true); + b.setBorder(BorderFactory.createEmptyBorder()); + b.setMargin(new Insets(5,5,5,5)); + b.setToolTipText(aToolTip); + + System.out.println(aImageName); + + URL iconUrl = getClass().getResource("toolbar/mozilla/" + aImageName + ".gif"); + b.setIcon(new ImageIcon(iconUrl)); + //iconUrl = getClass().getResource("toolbar/mozilla/" + aImageName + "-disabled.gif"); + //b.setDisabledIcon(new ImageIcon(iconUrl)); + //iconUrl = getClass().getResource("toolbar/mozilla/" + aImageName + "-pressed.gif"); + //b.setPressedIcon(new ImageIcon(iconUrl)); + //iconUrl = getClass().getResource("toolbar/mozilla/" + aImageName + "-rollover.gif"); + //b.setRolloverIcon(new ImageIcon(iconUrl)); + + Dimension d=b.getPreferredSize(); + System.out.println(d.getWidth()); + System.out.println(d.getHeight()); + double w=d.getWidth(); + if (w > 48) { + d.setSize(w, 38); + } else { + d.setSize(48, 38); + } + b.setMinimumSize(d); + b.setMaximumSize(d); + b.setPreferredSize(d); + + if (aActionListener != null) { + b.addActionListener(aActionListener); + } else { + b.setEnabled(false); + } + + add(b); + + } } diff --git a/mozilla/grendel/widgets/toolbar/mozilla/address.gif b/mozilla/grendel/widgets/toolbar/mozilla/address.gif new file mode 100644 index 00000000000..af39541af29 Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/address.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/attach.gif b/mozilla/grendel/widgets/toolbar/mozilla/attach.gif new file mode 100644 index 00000000000..30e5f148a67 Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/attach.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/copy.gif b/mozilla/grendel/widgets/toolbar/mozilla/copy.gif new file mode 100644 index 00000000000..c027bccd21f Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/copy.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/delete.gif b/mozilla/grendel/widgets/toolbar/mozilla/delete.gif new file mode 100644 index 00000000000..3a31637e611 Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/delete.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/expunge.gif b/mozilla/grendel/widgets/toolbar/mozilla/expunge.gif new file mode 100644 index 00000000000..d936b1fb7e9 Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/expunge.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/expunge1.gif b/mozilla/grendel/widgets/toolbar/mozilla/expunge1.gif new file mode 100644 index 00000000000..a0c78776b72 Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/expunge1.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/expunge2.gif b/mozilla/grendel/widgets/toolbar/mozilla/expunge2.gif new file mode 100644 index 00000000000..a623c3d0a4f Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/expunge2.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/expunge3.gif b/mozilla/grendel/widgets/toolbar/mozilla/expunge3.gif new file mode 100644 index 00000000000..34469bc71e4 Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/expunge3.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/expunge4.gif b/mozilla/grendel/widgets/toolbar/mozilla/expunge4.gif new file mode 100644 index 00000000000..5d78e7cef4a Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/expunge4.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/file.gif b/mozilla/grendel/widgets/toolbar/mozilla/file.gif new file mode 100644 index 00000000000..88e4c163790 Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/file.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/forward.gif b/mozilla/grendel/widgets/toolbar/mozilla/forward.gif new file mode 100644 index 00000000000..44cd1a375d2 Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/forward.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/getmsg.gif b/mozilla/grendel/widgets/toolbar/mozilla/getmsg.gif new file mode 100644 index 00000000000..e2ed5591c34 Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/getmsg.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/ignorethread.gif b/mozilla/grendel/widgets/toolbar/mozilla/ignorethread.gif new file mode 100644 index 00000000000..4703200381a Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/ignorethread.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/markallread.gif b/mozilla/grendel/widgets/toolbar/mozilla/markallread.gif new file mode 100644 index 00000000000..f0130e69563 Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/markallread.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/markread.gif b/mozilla/grendel/widgets/toolbar/mozilla/markread.gif new file mode 100644 index 00000000000..41e928832a3 Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/markread.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/markthreadread.gif b/mozilla/grendel/widgets/toolbar/mozilla/markthreadread.gif new file mode 100644 index 00000000000..1343a7226dd Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/markthreadread.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/markunread.gif b/mozilla/grendel/widgets/toolbar/mozilla/markunread.gif new file mode 100644 index 00000000000..6b24f5ba1c5 Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/markunread.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/move.gif b/mozilla/grendel/widgets/toolbar/mozilla/move.gif new file mode 100644 index 00000000000..9de9a71f675 Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/move.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/move2.gif b/mozilla/grendel/widgets/toolbar/mozilla/move2.gif new file mode 100644 index 00000000000..88e4c163790 Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/move2.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/newcard.gif b/mozilla/grendel/widgets/toolbar/mozilla/newcard.gif new file mode 100644 index 00000000000..b00a052952a Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/newcard.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/newlist.gif b/mozilla/grendel/widgets/toolbar/mozilla/newlist.gif new file mode 100644 index 00000000000..daaf0f775f0 Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/newlist.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/newmsg.gif b/mozilla/grendel/widgets/toolbar/mozilla/newmsg.gif new file mode 100644 index 00000000000..6038574b827 Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/newmsg.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/newpost.gif b/mozilla/grendel/widgets/toolbar/mozilla/newpost.gif new file mode 100644 index 00000000000..507e2a181e0 Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/newpost.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/newpost2.gif b/mozilla/grendel/widgets/toolbar/mozilla/newpost2.gif new file mode 100644 index 00000000000..17635ff8780 Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/newpost2.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/nextfolder.gif b/mozilla/grendel/widgets/toolbar/mozilla/nextfolder.gif new file mode 100644 index 00000000000..ba6f0ecd9b5 Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/nextfolder.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/nextmsg.gif b/mozilla/grendel/widgets/toolbar/mozilla/nextmsg.gif new file mode 100644 index 00000000000..b5481a4c876 Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/nextmsg.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/nextthread.gif b/mozilla/grendel/widgets/toolbar/mozilla/nextthread.gif new file mode 100644 index 00000000000..f24a2a8e14c Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/nextthread.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/nextunreadfolder.gif b/mozilla/grendel/widgets/toolbar/mozilla/nextunreadfolder.gif new file mode 100644 index 00000000000..6655fa01eb3 Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/nextunreadfolder.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/nextunreadmsg.gif b/mozilla/grendel/widgets/toolbar/mozilla/nextunreadmsg.gif new file mode 100644 index 00000000000..5e27af884ea Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/nextunreadmsg.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/nextunreadthread.gif b/mozilla/grendel/widgets/toolbar/mozilla/nextunreadthread.gif new file mode 100644 index 00000000000..875518db069 Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/nextunreadthread.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/offline.gif b/mozilla/grendel/widgets/toolbar/mozilla/offline.gif new file mode 100644 index 00000000000..9c800679299 Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/offline.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/online.gif b/mozilla/grendel/widgets/toolbar/mozilla/online.gif new file mode 100644 index 00000000000..aced3ffabe0 Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/online.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/prevfolder.gif b/mozilla/grendel/widgets/toolbar/mozilla/prevfolder.gif new file mode 100644 index 00000000000..610f8dc4f35 Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/prevfolder.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/prevmsg.gif b/mozilla/grendel/widgets/toolbar/mozilla/prevmsg.gif new file mode 100644 index 00000000000..dff4d5c0e34 Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/prevmsg.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/prevthread.gif b/mozilla/grendel/widgets/toolbar/mozilla/prevthread.gif new file mode 100644 index 00000000000..0aec991f7db Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/prevthread.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/prevunreadfolder.gif b/mozilla/grendel/widgets/toolbar/mozilla/prevunreadfolder.gif new file mode 100644 index 00000000000..2d035749d0f Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/prevunreadfolder.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/prevunreadmsg.gif b/mozilla/grendel/widgets/toolbar/mozilla/prevunreadmsg.gif new file mode 100644 index 00000000000..d17a718a4a1 Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/prevunreadmsg.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/prevunreadthread.gif b/mozilla/grendel/widgets/toolbar/mozilla/prevunreadthread.gif new file mode 100644 index 00000000000..c922ffe9b3e Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/prevunreadthread.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/print.gif b/mozilla/grendel/widgets/toolbar/mozilla/print.gif new file mode 100644 index 00000000000..7c64083e2d8 Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/print.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/properties.gif b/mozilla/grendel/widgets/toolbar/mozilla/properties.gif new file mode 100644 index 00000000000..7d4c04fc667 Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/properties.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/properties2.gif b/mozilla/grendel/widgets/toolbar/mozilla/properties2.gif new file mode 100644 index 00000000000..8e71747a741 Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/properties2.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/reply.gif b/mozilla/grendel/widgets/toolbar/mozilla/reply.gif new file mode 100644 index 00000000000..b0e9b8f85a6 Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/reply.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/replyall.gif b/mozilla/grendel/widgets/toolbar/mozilla/replyall.gif new file mode 100644 index 00000000000..566dd24396b Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/replyall.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/replyboth.gif b/mozilla/grendel/widgets/toolbar/mozilla/replyboth.gif new file mode 100644 index 00000000000..380acb3a3a7 Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/replyboth.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/replyboth2.gif b/mozilla/grendel/widgets/toolbar/mozilla/replyboth2.gif new file mode 100644 index 00000000000..ed5bf976946 Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/replyboth2.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/replygroup.gif b/mozilla/grendel/widgets/toolbar/mozilla/replygroup.gif new file mode 100644 index 00000000000..c327038e011 Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/replygroup.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/replygroup2.gif b/mozilla/grendel/widgets/toolbar/mozilla/replygroup2.gif new file mode 100644 index 00000000000..b04c1607bab Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/replygroup2.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/replyprivate.gif b/mozilla/grendel/widgets/toolbar/mozilla/replyprivate.gif new file mode 100644 index 00000000000..fd5a3403dc4 Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/replyprivate.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/save.gif b/mozilla/grendel/widgets/toolbar/mozilla/save.gif new file mode 100644 index 00000000000..2efca2709cc Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/save.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/send.gif b/mozilla/grendel/widgets/toolbar/mozilla/send.gif new file mode 100644 index 00000000000..9ffab651914 Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/send.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/spelling.gif b/mozilla/grendel/widgets/toolbar/mozilla/spelling.gif new file mode 100644 index 00000000000..cfb7b15283e Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/spelling.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/stop.gif b/mozilla/grendel/widgets/toolbar/mozilla/stop.gif new file mode 100644 index 00000000000..455da977a49 Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/stop.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/synchronize.gif b/mozilla/grendel/widgets/toolbar/mozilla/synchronize.gif new file mode 100644 index 00000000000..5cccfc7912c Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/synchronize.gif differ diff --git a/mozilla/grendel/widgets/toolbar/mozilla/watchthread.gif b/mozilla/grendel/widgets/toolbar/mozilla/watchthread.gif new file mode 100644 index 00000000000..b1693f211ab Binary files /dev/null and b/mozilla/grendel/widgets/toolbar/mozilla/watchthread.gif differ