Skip to content

Commit

Permalink
added support for changing the buffer size via the preferences page
Browse files Browse the repository at this point in the history
  • Loading branch information
ceki committed Jul 12, 2012
1 parent 638f91e commit f06e1a1
Show file tree
Hide file tree
Showing 10 changed files with 221 additions and 119 deletions.
4 changes: 2 additions & 2 deletions ch.qos.logback.beagle/plugin.xml
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,14 @@
point="org.eclipse.ui.preferencePages">
<page
category="org.eclipse.debug.ui.DebugPreferencePage"
class="ch.qos.logback.beagle.preferences.WorkbenchPreferences"
class="ch.qos.logback.beagle.preferences.BeaglePreferencesPage"
id="ch.qos.logback.beagle.preferences"
name="Beagle">
</page>
</extension>

<extension point="org.eclipse.core.runtime.preferences">
<initializer class="ch.qos.logback.beagle.preferences.PreferenceInitializer"/>
<initializer class="ch.qos.logback.beagle.preferences.BeaglePreferenceInitializer"/>
</extension>

</plugin>
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ public class Constants {

final public static int ICON_SIZE = 16;

public static int MAX = 20*1000;
//public static int MAX = 20*1000;

public static int CLEAN_COUNT = MAX / 10;
//public static int CLEAN_COUNT = MAX / 10;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/**
* Logback-beagle: The logback Console Plugin for Eclipse
* Copyright (C) 2006-2012, QOS.ch. All rights reserved.
*
* This program and the accompanying materials are licensed under
* either the terms of the Eclipse Public License v1.0 as published by
* the Eclipse Foundation.
*/
package ch.qos.logback.beagle.preferences;

import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
import org.eclipse.jface.preference.IPreferenceStore;

import ch.qos.logback.beagle.Activator;

public class BeaglePreferenceInitializer extends AbstractPreferenceInitializer {

@Override
public void initializeDefaultPreferences() {
IPreferenceStore store = Activator.getDefault().getPreferenceStore();
store.setDefault(BeaglePreferencesPage.PATTERN_PREFERENCE,
BeaglePreferencesPage.PATTERN_PREFERENCE_DEFAULT_VALUE);
store.setDefault(BeaglePreferencesPage.BUFFER_SIZE_PREFERENCE,
BeaglePreferencesPage.BUFFER_SIZE_PREFERENCE_DEFAULT_VALUE);

}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
/**
* Logback-beagle: The logback Console Plugin for Eclipse
* Copyright (C) 2006-2012, QOS.ch. All rights reserved.
*
* This program and the accompanying materials are licensed under
* either the terms of the Eclipse Public License v1.0 as published by
* the Eclipse Foundation.
*/
package ch.qos.logback.beagle.preferences;

import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;

import ch.qos.logback.beagle.visual.ClassicTISBuffer;
import ch.qos.logback.classic.PatternLayout;

/**
* This IPropertyChangeListener reacts to preference changes and updates BeagleView accordingly.
*
* @author ceki
* @since 1.0.0
*/
public class BeaglePreferencesChangeListenter implements IPropertyChangeListener {

final ClassicTISBuffer classicTISBuffer;
final PatternLayout layout;

public BeaglePreferencesChangeListenter(PatternLayout layout, ClassicTISBuffer classicTISBuffer) {
this.layout = layout;
this.classicTISBuffer = classicTISBuffer;
}

@Override
public void propertyChange(PropertyChangeEvent event) {
String changedProperty = event.getProperty();
if (BeaglePreferencesPage.PATTERN_PREFERENCE.equals(changedProperty)) {
updateLayoutPattern(event);
} else if (BeaglePreferencesPage.BUFFER_SIZE_PREFERENCE.equals(changedProperty)) {
updateBufferSize(event);
}

}

private void updateBufferSize(PropertyChangeEvent event) {
int newBufferSize = (Integer) event.getNewValue();
classicTISBuffer.setBufferSize(newBufferSize);
System.out.println("new buffer size = "+newBufferSize);
}

private void updateLayoutPattern(PropertyChangeEvent event) {
String newPattern = (String) event.getNewValue();
if(newPattern != null) {
layout.setPattern(newPattern);
layout.start();
classicTISBuffer.resetTable();
}
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
/**
* Logback-beagle: The logback Console Plugin for Eclipse
* Copyright (C) 2006-2012, QOS.ch. All rights reserved.
*
* This program and the accompanying materials are licensed under
* either the terms of the Eclipse Public License v1.0 as published by
* the Eclipse Foundation.
*/
package ch.qos.logback.beagle.preferences;

import org.eclipse.jface.preference.FieldEditor;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.jface.preference.IntegerFieldEditor;
import org.eclipse.jface.preference.StringFieldEditor;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;

import ch.qos.logback.beagle.Activator;

/**
*
* @author ceki
*
*/
public class BeaglePreferencesPage extends FieldEditorPreferencePage implements
IWorkbenchPreferencePage {

public static final String PATTERN_PREFERENCE = "ch.qos.logback.beagle.Pattern";
public static final String PATTERN_PREFERENCE_DEFAULT_VALUE = "%date %-5level %-20([%thread]) %logger{32} %message";

public static final String BUFFER_SIZE_PREFERENCE = "ch.qos.logback.beagle.BufferSize";
public static final int BUFFER_SIZE_PREFERENCE_DEFAULT_VALUE = 20000;
static final int MIN_BUFFER_SIZE = 100;
static final int MAX_BUFFER_SIZE = 100*1000;

private StringFieldEditor patternEditor;
private IntegerFieldEditor bufferSizeEditor;


public BeaglePreferencesPage() {
super(GRID);
setPreferenceStore(Activator.INSTANCE.getPreferenceStore());
setDescription("Beagle (logback console) settings:");
}



@Override
public void init(IWorkbench workbench) {
}


@Override protected void checkState() {
super.checkState();
if(!isValid()) return;
int val = bufferSizeEditor.getIntValue();
if(val <= MIN_BUFFER_SIZE) {
setErrorMessage("Buffer size must be greater than "+MIN_BUFFER_SIZE);
setValid(false);
} else if(val > MAX_BUFFER_SIZE) {
setErrorMessage("Buffer size must be less than "+MAX_BUFFER_SIZE);
setValid(false);
}
}

public void propertyChange(PropertyChangeEvent event) {
super.propertyChange(event);
if(FieldEditor.VALUE.equals(event.getProperty())) {
if(event.getSource() == bufferSizeEditor) {
checkState();
}
}
}

@Override
protected void createFieldEditors() {
patternEditor = new StringFieldEditor(PATTERN_PREFERENCE, "Log line pattern:", getFieldEditorParent());
addField(patternEditor);

bufferSizeEditor = new IntegerFieldEditor(BUFFER_SIZE_PREFERENCE, "Buffer size (lines):", getFieldEditorParent());
addField(bufferSizeEditor);
}

}

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@
import ch.qos.logback.beagle.Activator;
import ch.qos.logback.beagle.Constants;
import ch.qos.logback.beagle.menu.MenuBuilder;
import ch.qos.logback.beagle.preferences.PreferencesChangeListenter;
import ch.qos.logback.beagle.preferences.WorkbenchPreferences;
import ch.qos.logback.beagle.preferences.BeaglePreferencesChangeListenter;
import ch.qos.logback.beagle.preferences.BeaglePreferencesPage;
import ch.qos.logback.beagle.util.MetricsUtil;
import ch.qos.logback.beagle.util.ResourceUtil;
import ch.qos.logback.beagle.visual.ClassicTISBuffer;
Expand All @@ -37,19 +37,19 @@ public class TableMediator {

public Table table;
public ClassicTISBuffer classicTISBuffer;
public PreferencesChangeListenter preferencesChangeListenter;
public BeaglePreferencesChangeListenter preferencesChangeListenter;
final Composite parent;
public final PatternLayout layout = new PatternLayout();
private LoggerContext loggerContext = new LoggerContext();

public TableMediator(Composite parent) {
this.parent = parent;
init();
}

private void init() {
loggerContext.setName("beagle");

table = new Table(parent, SWT.VIRTUAL | SWT.H_SCROLL | SWT.V_SCROLL
| SWT.MULTI | SWT.BORDER);
table.setFont(ResourceUtil.FONT);
Expand Down Expand Up @@ -101,16 +101,17 @@ private void init() {

table.addControlListener(new TableControlListener(charWidth));


initLayout(layout);
classicTISBuffer = new ClassicTISBuffer(layout, table);
int bufSize = getBufferSize();
classicTISBuffer = new ClassicTISBuffer(layout, table, bufSize);
classicTISBuffer.diffCue = diffCueLabel;
classicTISBuffer.jumpCue = jumpCueLabel;

preferencesChangeListenter = new PreferencesChangeListenter(layout, classicTISBuffer);


// when the table is cleared visualElementBuffer's handleEvent method will re-populate the item
preferencesChangeListenter = new BeaglePreferencesChangeListenter(layout,
classicTISBuffer);

// when the table is cleared visualElementBuffer's handleEvent method will
// re-populate the item
table.addListener(SWT.SetData, classicTISBuffer);
table.addDisposeListener(classicTISBuffer);

Expand All @@ -128,20 +129,31 @@ private void init() {
table.addMouseListener(myMouseListener);
table.addMouseTrackListener(myMouseListener);

table.addMouseMoveListener(new TimeDifferenceMouseListener(
classicTISBuffer));
table
.addMouseMoveListener(new TimeDifferenceMouseListener(classicTISBuffer));

Menu menu = MenuBuilder.buildMenu(classicTISBuffer);
MenuBuilder.addOnMenuSelectionAction(menu, classicTISBuffer);
table.setMenu(menu);
table.setItemCount(0);
}


int getBufferSize() {
int result = BeaglePreferencesPage.BUFFER_SIZE_PREFERENCE_DEFAULT_VALUE;
if (Activator.INSTANCE != null) {
IPreferenceStore pStore = Activator.INSTANCE.getPreferenceStore();
result = pStore.getInt(BeaglePreferencesPage.BUFFER_SIZE_PREFERENCE);
}
return result;
}
private void initLayout(PatternLayout layout) {
layout.setContext(loggerContext);
IPreferenceStore pStore = Activator.INSTANCE.getPreferenceStore();
String pattern = pStore.getString(WorkbenchPreferences.PATTERN_PREFERENCE);
layout.setPattern(pattern);
layout.start();
layout.setContext(loggerContext);
String pattern = BeaglePreferencesPage.PATTERN_PREFERENCE_DEFAULT_VALUE;
if (Activator.INSTANCE != null) {
IPreferenceStore pStore = Activator.INSTANCE.getPreferenceStore();
pattern = pStore.getString(BeaglePreferencesPage.PATTERN_PREFERENCE);
}
layout.setPattern(pattern);
layout.start();
}
}
Loading

0 comments on commit f06e1a1

Please sign in to comment.