package org.eclipse.dltk.ui.text.folding;
import java.util.List;
import org.eclipse.dltk.ui.PreferenceConstants;
import org.eclipse.dltk.ui.preferences.OverlayPreferenceStore;
import org.eclipse.dltk.ui.preferences.PreferencesMessages;
import org.eclipse.dltk.ui.preferences.OverlayPreferenceStore.OverlayKey;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
public class SourceCodeFoldingPreferenceBlock extends
AbstractContributedFoldingPreferenceBlock {
public SourceCodeFoldingPreferenceBlock(OverlayPreferenceStore store,
PreferencePage page) {
super(store, page);
}
/**
* {@inheritDoc}
*
* <p>
* Sub-classes overriding this method to add additional overlay keys must
* also invoke this method.
* </p>
*/
@Override
protected void addOverlayKeys(List<OverlayKey> keys) {
keys.add(new OverlayPreferenceStore.OverlayKey(
OverlayPreferenceStore.BOOLEAN, getInitiallyFoldClassesKey()));
keys.add(new OverlayPreferenceStore.OverlayKey(
OverlayPreferenceStore.BOOLEAN, getInitiallyFoldMethodsKey()));
}
/**
* {@inheritDoc}
*
* <p>
* Sub-classes should override this method to add additional source block
* folding options.
* </p>
*/
protected void createOptionsControl(Composite composite) {
// empty implementation
}
/**
* {@inheritDoc}
*
* <p>
* Sub-classes overriding this method to add additional 'initially' fold
* options also invoke this method.
* </p>
*/
protected void addInitiallyFoldOptions(Group group) {
/*
* don't display the 'initally fold' classes checkbox if the language
* doesn't support the notion of a top level class (ie: shell scripts,
* javascript, etc)
*/
if (supportsClassFolding()) {
createCheckBox(group, getInitiallyFoldClassesText(),
getInitiallyFoldClassesKey());
}
createCheckBox(group, getInitiallyFoldMethodsText(),
getInitiallyFoldMethodsKey());
}
/**
* Returns the preference key used to indicate if classes should be
* 'initially' folded.
*
* <p>
* Sub-classes may override this method to provide an alternative preference
* key if they are not using the one in {@link PreferenceConstants}.
* </p>
*/
protected String getInitiallyFoldClassesKey() {
return PreferenceConstants.EDITOR_FOLDING_INIT_CLASSES;
}
/**
* Returns the preference key used to indicate if methods should be
* 'initially' folded.
*
* <p>
* Sub-classes may override this method to provide an alternative preference
* key if they are not using the one in {@link PreferenceConstants}.
* </p>
*/
protected String getInitiallyFoldMethodsKey() {
return PreferenceConstants.EDITOR_FOLDING_INIT_METHODS;
}
protected String getInitiallyFoldMethodsText() {
return PreferencesMessages.FoldingConfigurationBlock_initiallyFoldMethods;
}
protected String getInitiallyFoldClassesText() {
return PreferencesMessages.FoldingConfigurationBlock_initiallyFoldClasses;
}
protected boolean supportsClassFolding() {
return true;
}
}