From 8db1bf8937400c20ffe2d6b56a8a6a9a0068d18e Mon Sep 17 00:00:00 2001 From: adam-m Date: Thu, 8 Mar 2012 15:58:43 -0500 Subject: [PATCH] TSK-392 Improve inbox icon with number of messages --- .../autopsy/ingest/Bundle.properties | 3 +- .../autopsy/ingest/IngestMessagesToolbar.form | 58 +-------- .../autopsy/ingest/IngestMessagesToolbar.java | 123 +++++++++++------- .../sleuthkit/autopsy/ingest/eye-icon-25.png | Bin 0 -> 2720 bytes .../sleuthkit/autopsy/ingest/eye-icon-32.png | Bin 0 -> 3331 bytes 5 files changed, 81 insertions(+), 103 deletions(-) create mode 100644 Ingest/src/org/sleuthkit/autopsy/ingest/eye-icon-25.png create mode 100644 Ingest/src/org/sleuthkit/autopsy/ingest/eye-icon-32.png diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/Bundle.properties b/Ingest/src/org/sleuthkit/autopsy/ingest/Bundle.properties index bc52f30a28..abf63f9c03 100644 --- a/Ingest/src/org/sleuthkit/autopsy/ingest/Bundle.properties +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/Bundle.properties @@ -26,7 +26,6 @@ IngestMessagePanel.sortByLabel.text=Sort by: IngestMessagePanel.sortByComboBox.toolTipText=Sort messages by time (chronological order) or message priority IngestDialogPanel.advancedButton.text=Advanced AdvancedConfigurationDialog.applyButton.text=Apply -IngestMessagesToolbar.ingestMessagesButton.text=0 -IngestMessagesToolbar.ingestMessagesButton.toolTipText=Ingest Messages IngestMessageDetailsPanel.messageDetailsPane.contentType=text/html IngestMessageDetailsPanel.messageDetailsPane.toolTipText= +IngestMessagesToolbar.toolTipText= diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessagesToolbar.form b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessagesToolbar.form index 869f4f0d9f..776d4ca6cd 100644 --- a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessagesToolbar.form +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessagesToolbar.form @@ -2,11 +2,14 @@
+ + + - + @@ -21,56 +24,5 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessagesToolbar.java b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessagesToolbar.java index c53d60242c..0043e047f1 100644 --- a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessagesToolbar.java +++ b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessagesToolbar.java @@ -16,11 +16,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.sleuthkit.autopsy.ingest; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.Graphics; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; +import javax.swing.JButton; import org.openide.windows.Mode; import org.openide.windows.WindowManager; import org.sleuthkit.autopsy.casemodule.Case; @@ -31,6 +36,8 @@ import org.sleuthkit.autopsy.casemodule.Case; */ public class IngestMessagesToolbar extends javax.swing.JPanel { + private IngestMessagesButton ingestMessagesButton = new IngestMessagesButton(); + /** Creates new form IngestMessagesToolbar */ public IngestMessagesToolbar() { initComponents(); @@ -46,78 +53,73 @@ public class IngestMessagesToolbar extends javax.swing.JPanel { // //GEN-BEGIN:initComponents private void initComponents() { - ingestMessagesButton = new javax.swing.JButton(); - + setToolTipText(org.openide.util.NbBundle.getMessage(IngestMessagesToolbar.class, "IngestMessagesToolbar.toolTipText")); // NOI18N setMaximumSize(new java.awt.Dimension(32767, 25)); - setPreferredSize(new java.awt.Dimension(80, 23)); - - ingestMessagesButton.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N - ingestMessagesButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/ingest/eye-icon-16.png"))); // NOI18N - ingestMessagesButton.setText(org.openide.util.NbBundle.getMessage(IngestMessagesToolbar.class, "IngestMessagesToolbar.ingestMessagesButton.text")); // NOI18N - ingestMessagesButton.setToolTipText(org.openide.util.NbBundle.getMessage(IngestMessagesToolbar.class, "IngestMessagesToolbar.ingestMessagesButton.toolTipText")); // NOI18N - ingestMessagesButton.setEnabled(false); - ingestMessagesButton.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); - ingestMessagesButton.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT); - ingestMessagesButton.setMargin(new java.awt.Insets(2, 0, 2, 2)); - ingestMessagesButton.setMaximumSize(new java.awt.Dimension(65, 23)); - ingestMessagesButton.setMinimumSize(new java.awt.Dimension(65, 23)); - ingestMessagesButton.setPreferredSize(new java.awt.Dimension(65, 23)); - ingestMessagesButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - ingestMessagesButtonActionPerformed(evt); - } - }); - - javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); - this.setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(ingestMessagesButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(10, 10, 10)) - ); - layout.setVerticalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(ingestMessagesButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - ); + setPreferredSize(new java.awt.Dimension(80, 25)); + setLayout(new java.awt.BorderLayout()); }// //GEN-END:initComponents - private void ingestMessagesButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ingestMessagesButtonActionPerformed - showIngestMessages(); - }//GEN-LAST:event_ingestMessagesButtonActionPerformed - // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JButton ingestMessagesButton; // End of variables declaration//GEN-END:variables + private void customizeButton() { + ingestMessagesButton = new IngestMessagesButton(); + setMaximumSize(new java.awt.Dimension(32767, 25)); + setPreferredSize(new java.awt.Dimension(80, 25)); + + ingestMessagesButton.setFont(new java.awt.Font("Tahoma", 0, 10)); + ingestMessagesButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/ingest/eye-icon-25.png"))); + ingestMessagesButton.setToolTipText("Ingest Messages"); + ingestMessagesButton.setBorder(null); + ingestMessagesButton.setBorderPainted(false); + ingestMessagesButton.setEnabled(false); + ingestMessagesButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); + ingestMessagesButton.setMargin(new java.awt.Insets(0, 0, 0, 0)); + ingestMessagesButton.setMaximumSize(new java.awt.Dimension(44, 26)); + ingestMessagesButton.setMinimumSize(new java.awt.Dimension(44, 26)); + ingestMessagesButton.setPreferredSize(new java.awt.Dimension(44, 26)); + ingestMessagesButton.addActionListener(new java.awt.event.ActionListener() { + + @Override + public void actionPerformed(java.awt.event.ActionEvent evt) { + showIngestMessages(); + } + }); + this.add(ingestMessagesButton, BorderLayout.CENTER); + } private void customizeComponents() { + + customizeButton(); + this.setBorder(null); + IngestMessagePanel.addPropertyChangeSupportListener(new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { - final int numberMessages = (Integer)evt.getNewValue(); - ingestMessagesButton.setText(Integer.toString(numberMessages)); + final int numberMessages = (Integer) evt.getNewValue(); + //ingestMessagesButton.setText(Integer.toString(numberMessages)); + //repaint button + ingestMessagesButton.setMessages(numberMessages); + ingestMessagesButton.repaint(); } - }); - + Case.addPropertyChangeListener(new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { - if(evt.getPropertyName().equals(Case.CASE_CURRENT_CASE)) + if (evt.getPropertyName().equals(Case.CASE_CURRENT_CASE)) { setEnabled(evt.getNewValue() != null); + } } - }); } private void showIngestMessages() { IngestMessageTopComponent tc = IngestMessageTopComponent.findInstance(); - + Mode mode = WindowManager.getDefault().findMode("floatingLeftBottom"); if (mode != null) { //TopComponent[] tcs = mode.getTopComponents(); @@ -126,10 +128,35 @@ public class IngestMessagesToolbar extends javax.swing.JPanel { //tc.requestActive(); } } - + @Override public void setEnabled(boolean enabled) { super.setEnabled(enabled); ingestMessagesButton.setEnabled(enabled); } + + private static class IngestMessagesButton extends JButton { + + private static final Font messagesFont = new java.awt.Font("Tahoma", 0, 9); + private int messages = 0; + + @Override + public void paint(Graphics g) { + super.paint(g); + + //paint text + String messageStr = Integer.toString(messages); + final int len = messageStr.length(); + g.setFont(messagesFont); + g.setColor(Color.BLUE); + int x = getSize().width - len * 5 - 1; + if (x<0) + x = 0; + g.drawString(messageStr, x, 10); + } + + void setMessages(int messages) { + this.messages = messages; + } + } } diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/eye-icon-25.png b/Ingest/src/org/sleuthkit/autopsy/ingest/eye-icon-25.png new file mode 100644 index 0000000000000000000000000000000000000000..2fed19628e6802815b8b2263612bbf19b39656b3 GIT binary patch literal 2720 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