OSDN Git Service

Save/Restore the width of all columns in the LogCatPanel table.
authorSiva Velusamy <vsiva@google.com>
Thu, 4 Aug 2011 21:38:05 +0000 (14:38 -0700)
committerSiva Velusamy <vsiva@google.com>
Tue, 9 Aug 2011 20:44:00 +0000 (13:44 -0700)
Create all columns using TableHelper.createTableColumn which adds
listeners that save the column width whenever they are resized by
the user, and restores them on subsequent creations.

Change-Id: I35d09a981b94aa086899e3bf74f2243029c60b2b

ddms/app/src/com/android/ddms/UIThread.java
ddms/libs/ddmuilib/src/com/android/ddmuilib/logcat/LogCatPanel.java

index c9dc2b1..0149739 100644 (file)
@@ -29,6 +29,7 @@ import com.android.ddmlib.ClientData.MethodProfilingStatus;
 import com.android.ddmlib.Log.ILogOutput;
 import com.android.ddmlib.Log.LogLevel;
 import com.android.ddmuilib.AllocationPanel;
+import com.android.ddmuilib.DdmUiPreferences;
 import com.android.ddmuilib.DevicePanel;
 import com.android.ddmuilib.EmulatorControlPanel;
 import com.android.ddmuilib.HeapPanel;
@@ -1365,7 +1366,7 @@ public class UIThread implements IUiSelectionListener, IClientChangeListener {
     }
 
     private void createLogCatView(Composite parent) {
-        mLogCatPanel = new LogCatPanel(new LogCatReceiver());
+        mLogCatPanel = new LogCatPanel(new LogCatReceiver(), DdmUiPreferences.getStore());
         mLogCatPanel.createPanel(parent);
 
         if (mCurrentDevice != null) {
index 9b35159..8fdf357 100644 (file)
@@ -17,7 +17,9 @@
 package com.android.ddmuilib.logcat;
 
 import com.android.ddmuilib.SelectionDependentPanel;
+import com.android.ddmuilib.TableHelper;
 
+import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.layout.GridData;
@@ -26,7 +28,6 @@ import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
 
 /**
  * LogCatPanel displays a table listing the logcat messages.
@@ -40,13 +41,16 @@ public final class LogCatPanel extends SelectionDependentPanel
 
     private TableViewer mViewer;
     private LogCatReceiver mReceiver;
+    private IPreferenceStore mPrefStore;
 
     /**
      * Construct a logcat panel.
      * @param r source of logcat messages.
+     * @param prefStore preference store where UI preferences will be saved
      */
-    public LogCatPanel(LogCatReceiver r) {
+    public LogCatPanel(LogCatReceiver r, IPreferenceStore prefStore) {
         mReceiver = r;
+        mPrefStore = prefStore;
         mReceiver.addMessageReceivedEventListener(this);
     }
 
@@ -86,8 +90,8 @@ public final class LogCatPanel extends SelectionDependentPanel
         mViewer.getTable().setLayoutData(gd);
         table.getHorizontalBar().setVisible(true);
 
-        /** Fields to show in the table. */
-        String []properties = {
+        /** Columns to show in the table. */
+        String[] properties = {
                 "Level",
                 "Time",
                 "PID",
@@ -95,19 +99,23 @@ public final class LogCatPanel extends SelectionDependentPanel
                 "Text",
         };
 
-        /** Column widths (in px) corresponding to the above fields. */
-        int []colWidths = {
-                50,
-                150,
-                50,
-                200,
-                1000,
+        /** The sampleText for each column is used to determine the default widths
+         * for each column. The contents do not matter, only their lengths are needed. */
+        String[] sampleText = {
+                "    II",
+                "    00-00 00:00:00.0000 ",
+                "    0000",
+                "    SampleTagText",
+                "    Log Message field should be pretty long by default.",
         };
 
         for (int i = 0; i < properties.length; i++) {
-            TableColumn col = new TableColumn(mViewer.getTable(), SWT.NONE, i);
-            col.setWidth(colWidths[i]);
-            col.setText(properties[i]);
+            TableHelper.createTableColumn(mViewer.getTable(),
+                    properties[i],                      /* Column title */
+                    SWT.LEFT,                           /* Column Style */
+                    sampleText[i],                      /* String to compute default col width */
+                    getPreferenceKey(properties[i]),    /* Preference Store key for this column */
+                    mPrefStore);
         }
 
         mViewer.getTable().setLinesVisible(true); /* zebra stripe the table */
@@ -118,6 +126,10 @@ public final class LogCatPanel extends SelectionDependentPanel
         mViewer.setInput(mReceiver.getMessages());
     }
 
+    private String getPreferenceKey(String field) {
+        return "logcat.view.colsize." + field;
+    }
+
     @Override
     public void setFocus() {
     }