blob: 7e6680ee9be6474cfce10f1caae35178315da754 [file] [log] [blame]
/**
*
* Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
*/
package org.eclipse.osbp.preferences.ui.component;
import org.eclipse.jface.preference.IntegerFieldEditor;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.osbp.preferences.ProductConfigurationDefaultPrefs;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CLabel;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.internal.ide.IDEWorkbenchPlugin;
public class HookedIntegerFieldEditor extends IntegerFieldEditor {
private final IPreferenceCheckStateProvider fCheckStateProvider;
protected CLabel label;
public HookedIntegerFieldEditor(String preference, String label, IPreferenceCheckStateProvider checkStateProvider, Composite parent) {
super(preference, label, parent);
fCheckStateProvider = checkStateProvider;
}
@Override
protected boolean doCheckState() {
if (fCheckStateProvider != null) {
return fCheckStateProvider.doCheckState(this, getTextControl().getText());
}
return super.doCheckState();
}
@Override
protected void doFillIntoGrid(Composite parent, int numColumns) {
super.doFillIntoGrid(parent, numColumns);
getTextControl().addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent e) {
showDefaultHint();
}
});
}
protected void showDefaultHint() {
APreferencePage.showLabelDefaultHint(label, getIntValue() == getPreferenceStore().getDefaultInt(getPreferenceName()));
}
@Override
public Label getLabelControl(Composite parent) {
if (label == null) {
label = new CLabel(parent, SWT.LEFT | SWT.RIGHT_TO_LEFT);
label.setFont(parent.getFont());
String text = getLabelText();
if (text != null) {
label.setText(text);
}
label.addDisposeListener(new DisposeListener() {
@Override
public void widgetDisposed(DisposeEvent event) {
label = null;
}
});
} else {
checkParent(label, parent);
}
return null;
}
@Override
public void setEnabled(boolean enabled, Composite parent) {
label.setEnabled(enabled);
}
@Override
protected void doLoad() {
super.doLoad();
showDefaultHint();
}
@Override
protected void doLoadDefault() {
super.doLoadDefault();
showDefaultHint();
}
}