1.1 --- a/tasklist.bugs/manifest.mf Thu Sep 16 19:09:24 2004 +0000
1.2 +++ b/tasklist.bugs/manifest.mf Thu Sep 16 19:10:35 2004 +0000
1.3 @@ -9,3 +9,6 @@
1.4 org.netbeans.tasklistapi/1 = @tl.api.impl@
1.5 OpenIDE-Module-Layer: org/netbeans/modules/tasklist/bugs/mf-layer.xml
1.6 OpenIDE-Module-Public-Packages: -
1.7 +
1.8 +Name: org/netbeans/modules/tasklist/bugs/issues/IssuesLoader.class
1.9 +OpenIDE-Module-Class: Loader
2.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/UserTasksTreeTable.java Thu Sep 16 19:09:24 2004 +0000
2.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/UserTasksTreeTable.java Thu Sep 16 19:10:35 2004 +0000
2.3 @@ -1,14 +1,20 @@
2.4 package org.netbeans.modules.tasklist.usertasks;
2.5
2.6 +import java.awt.Component;
2.7 import java.awt.Rectangle;
2.8 import java.util.ArrayList;
2.9 import java.util.List;
2.10 import java.util.logging.Level;
2.11 import java.util.logging.Logger;
2.12 +import javax.swing.ImageIcon;
2.13 +import javax.swing.JTable;
2.14
2.15 import javax.swing.ListSelectionModel;
2.16 +import javax.swing.UIManager;
2.17 import javax.swing.event.ListSelectionEvent;
2.18 import javax.swing.event.ListSelectionListener;
2.19 +import javax.swing.table.DefaultTableCellRenderer;
2.20 +import javax.swing.table.JTableHeader;
2.21 import javax.swing.table.TableColumn;
2.22 import javax.swing.table.TableColumnModel;
2.23 import javax.swing.tree.TreePath;
2.24 @@ -33,6 +39,7 @@
2.25 import org.openide.explorer.ExplorerManager;
2.26 import org.openide.nodes.Node;
2.27 import org.netbeans.modules.tasklist.usertasks.treetable.BooleanTableCellRenderer;
2.28 +import org.netbeans.modules.tasklist.usertasks.treetable.SortingHeaderRenderer;
2.29
2.30 /**
2.31 * TT for user tasks
2.32 @@ -161,8 +168,13 @@
2.33
2.34 tcm.getColumn(1).setCellRenderer(
2.35 new PriorityTableCellRenderer());
2.36 + SortingHeaderRenderer r = new SortingHeaderRenderer();
2.37 + r.setIcon(new ImageIcon(
2.38 + UserTasksTreeTable.class.getResource("checkbox.gif"))); // NOI18N
2.39 + tcm.getColumn(2).setHeaderRenderer(r);
2.40 tcm.getColumn(2).setCellRenderer(
2.41 new BooleanTableCellRenderer());
2.42 + tcm.getColumn(2).setMinWidth(17);
2.43 tcm.getColumn(3).setCellRenderer(
2.44 new PercentsTableCellRenderer());
2.45 DurationTableCellRenderer dr = new DurationTableCellRenderer();
3.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/translators/usertasks-1_0.dtd Thu Sep 16 19:09:24 2004 +0000
3.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/translators/usertasks-1_0.dtd Thu Sep 16 19:10:35 2004 +0000
3.3 @@ -14,7 +14,6 @@
3.4 -->
3.5
3.6 <!--
3.7 - Author : Tim Lebedkov
3.8 Description: export format for user tasks
3.9 -->
3.10
4.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/treetable/SortingHeaderRenderer.java Thu Sep 16 19:09:24 2004 +0000
4.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/treetable/SortingHeaderRenderer.java Thu Sep 16 19:10:35 2004 +0000
4.3 @@ -13,24 +13,108 @@
4.4
4.5 package org.netbeans.modules.tasklist.usertasks.treetable;
4.6
4.7 +import java.awt.BorderLayout;
4.8 import java.awt.Component;
4.9 +import java.awt.Dimension;
4.10 +import java.awt.FlowLayout;
4.11 import java.awt.Font;
4.12 +import java.awt.Insets;
4.13 +import javax.swing.BoxLayout;
4.14 +import javax.swing.Icon;
4.15
4.16 import javax.swing.ImageIcon;
4.17 import javax.swing.JLabel;
4.18 +import javax.swing.JPanel;
4.19 import javax.swing.JTable;
4.20 import javax.swing.SwingConstants;
4.21 import javax.swing.UIManager;
4.22 +import javax.swing.border.CompoundBorder;
4.23 +import javax.swing.border.EmptyBorder;
4.24 import javax.swing.table.DefaultTableCellRenderer;
4.25 import javax.swing.table.JTableHeader;
4.26 +import javax.swing.table.TableCellRenderer;
4.27 import javax.swing.table.TableColumnModel;
4.28 +import org.netbeans.modules.tasklist.usertasks.UTUtils;
4.29
4.30 /**
4.31 * Cell renderer for sorting column header.
4.32 * Originally copied from org.openide.explorer.view.TreeTableView
4.33 */
4.34 -public class SortingHeaderRenderer extends DefaultTableCellRenderer {
4.35 -
4.36 +public class SortingHeaderRenderer extends JPanel implements TableCellRenderer {
4.37 + /**
4.38 + * A simple layout for an icon and a label
4.39 + *
4.40 + * [-----]
4.41 + * [----] [-----]
4.42 + * [Icon] [Label]
4.43 + * [----] [-----]
4.44 + * [-----]
4.45 + */
4.46 + private static class IconAndLabelLayout implements java.awt.LayoutManager {
4.47 + private Component icon, label;
4.48 +
4.49 + /**
4.50 + * Constructor
4.51 + *
4.52 + * @param icon icon component
4.53 + * @param label label component
4.54 + */
4.55 + public IconAndLabelLayout(Component icon, Component label) {
4.56 + this.icon = icon;
4.57 + this.label = label;
4.58 + }
4.59 +
4.60 + public java.awt.Dimension preferredLayoutSize(java.awt.Container parent) {
4.61 + Dimension d = new Dimension();
4.62 + Dimension iconPref = icon.getPreferredSize();
4.63 + Dimension labelPref = label.getPreferredSize();
4.64 + d.width = iconPref.width + labelPref.width + 2;
4.65 + d.height = Math.max(iconPref.height, labelPref.height);
4.66 + return d;
4.67 + }
4.68 +
4.69 + public void removeLayoutComponent(Component comp) {
4.70 + }
4.71 +
4.72 + public void addLayoutComponent(String name, Component comp) {
4.73 + }
4.74 +
4.75 + public void layoutContainer(java.awt.Container parent) {
4.76 + Dimension iconPref = icon.getPreferredSize();
4.77 + Dimension labelPref = label.getPreferredSize();
4.78 + Insets insets = parent.getInsets();
4.79 +
4.80 + int y = (parent.getHeight() - insets.top - insets.bottom -
4.81 + iconPref.height) / 2;
4.82 + int x = (parent.getWidth() - insets.left - insets.right -
4.83 + iconPref.width - 2 - labelPref.width) / 2;
4.84 + if (y < 0)
4.85 + y = 0;
4.86 + if (x < 0)
4.87 + x = 0;
4.88 +
4.89 + x += insets.left;
4.90 + y += insets.top;
4.91 +
4.92 + int w = parent.getWidth() - iconPref.width - 2;
4.93 + if (w < 0)
4.94 + w = 0;
4.95 +
4.96 + icon.setBounds(x, y, iconPref.width, iconPref.height);
4.97 +
4.98 + if (iconPref.width != 0)
4.99 + x = x + iconPref.width + 2;
4.100 + label.setBounds(x, 0, w, parent.getHeight());
4.101 +
4.102 + UTUtils.LOGGER.fine("icon " + icon.getBounds().toString());
4.103 + UTUtils.LOGGER.fine("label" + label.getBounds().toString());
4.104 + }
4.105 +
4.106 + public java.awt.Dimension minimumLayoutSize(java.awt.Container parent) {
4.107 + return new Dimension(0, 0);
4.108 + }
4.109 + }
4.110 +
4.111 private static final long serialVersionUID = 1;
4.112
4.113 private static ImageIcon SORT_DESC_ICON =
4.114 @@ -39,13 +123,25 @@
4.115 private static ImageIcon SORT_ASC_ICON =
4.116 new ImageIcon(org.openide.util.Utilities.loadImage(
4.117 "org/netbeans/modules/tasklist/usertasks/treetable/columnsSortedAsc.gif")); // NOI18N
4.118 +
4.119 + private JLabel label = new JLabel();
4.120 + private DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
4.121
4.122 /**
4.123 * Constructor
4.124 */
4.125 public SortingHeaderRenderer() {
4.126 - setHorizontalAlignment(JLabel.CENTER);
4.127 - setHorizontalTextPosition(SwingConstants.LEFT);
4.128 +/* setBorder(new CompoundBorder(
4.129 + UIManager.getBorder("TableHeader.cellBorder"),
4.130 + new EmptyBorder(0, 2, 0, 2)));*/
4.131 +
4.132 + renderer.setHorizontalTextPosition(SwingConstants.LEFT);
4.133 + renderer.setOpaque(false);
4.134 +
4.135 + add(label);
4.136 + add(renderer);
4.137 +
4.138 + setLayout(new SortingHeaderRenderer.IconAndLabelLayout(label, renderer));
4.139 }
4.140
4.141 public Component getTableCellRendererComponent(JTable table, Object value,
4.142 @@ -55,28 +151,46 @@
4.143 if (header != null) {
4.144 setForeground(header.getForeground());
4.145 setBackground(header.getBackground());
4.146 - setFont(header.getFont());
4.147 + renderer.setFont(header.getFont());
4.148 }
4.149 TableColumnModel tcm = header.getColumnModel();
4.150 int modelIndex = tcm.getColumn(column).getModelIndex();
4.151 SortingModel tableModel = ((TreeTable) table).getSortingModel();
4.152 if (tableModel != null) {
4.153 if (tableModel.getSortedColumn() == modelIndex) {
4.154 - this.setIcon(
4.155 + renderer.setIcon(
4.156 tableModel.isSortOrderDescending() ?
4.157 SORT_DESC_ICON : SORT_ASC_ICON);
4.158 - this.setFont(this.getFont().deriveFont(Font.BOLD));
4.159 + renderer.setFont(this.getFont().deriveFont(Font.BOLD));
4.160 } else {
4.161 - this.setIcon(null);
4.162 + renderer.setIcon(null);
4.163 }
4.164 }
4.165 }
4.166
4.167 - setText((value == null) ? "" : value.toString());
4.168 + renderer.setText((value == null) ? "" : value.toString());
4.169 setBorder(UIManager.getBorder("TableHeader.cellBorder"));
4.170
4.171 return this;
4.172 }
4.173 +
4.174 + /**
4.175 + * Sets an icon
4.176 + *
4.177 + * @param new icon
4.178 + */
4.179 + public void setIcon(Icon icon) {
4.180 + label.setIcon(icon);
4.181 + }
4.182 +
4.183 + /**
4.184 + * Returns the icon
4.185 + *
4.186 + * @return icon
4.187 + */
4.188 + public Icon getIcon() {
4.189 + return label.getIcon();
4.190 + }
4.191 }
4.192
4.193