/******************************************************************************* * Copyright (c) 2005, 2007 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.wst.jsdt.internal.ui.preferences.cleanup; import java.util.Map; import java.util.Observable; import java.util.Observer; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.wst.jsdt.internal.ui.fix.ICleanUp; import org.eclipse.wst.jsdt.internal.ui.preferences.formatter.JavaPreview; import org.eclipse.wst.jsdt.internal.ui.preferences.formatter.ModifyDialogTabPage; public abstract class CleanUpTabPage extends ModifyDialogTabPage { private final Map fValues; private JavaPreview fCleanUpPreview; private final boolean fIsSaveAction; private int fCount; private int fSelectedCount; public CleanUpTabPage(IModificationListener listener, Map values, boolean isSaveAction) { super(listener, values); fValues= values; fIsSaveAction= isSaveAction; fCount= 0; fSelectedCount= 0; } /** * @return is this tab page shown in the save action dialog */ public boolean isSaveAction() { return fIsSaveAction; } public int getCleanUpCount() { return fCount; } public int getSelectedCleanUpCount() { return fSelectedCount; } protected abstract ICleanUp[] createPreviewCleanUps(Map values); protected JavaPreview doCreateJavaPreview(Composite parent) { fCleanUpPreview= new CleanUpPreview(parent, createPreviewCleanUps(fValues)); return fCleanUpPreview; } protected void doUpdatePreview() { fCleanUpPreview.setWorkingValues(fValues); fCleanUpPreview.update(); } protected void initializePage() { fCleanUpPreview.update(); } protected void registerPreference(final CheckboxPreference preference) { fCount++; preference.addObserver(new Observer() { public void update(Observable o, Object arg) { if (preference.getChecked()) { fSelectedCount++; } else { fSelectedCount--; } } }); if (preference.getChecked()) { fSelectedCount++; } } protected void registerSlavePreference(final CheckboxPreference master, final RadioPreference[] slaves) { internalRegisterSlavePreference(master, slaves); registerPreference(master); } protected void registerSlavePreference(final CheckboxPreference master, final CheckboxPreference[] slaves) { internalRegisterSlavePreference(master, slaves); fCount+= slaves.length; master.addObserver(new Observer() { public void update(Observable o, Object arg) { if (master.getChecked()) { for (int i= 0; i < slaves.length; i++) { if (slaves[i].getChecked()) { fSelectedCount++; } } } else { for (int i= 0; i < slaves.length; i++) { if (slaves[i].getChecked()) { fSelectedCount--; } } } } }); for (int i= 0; i < slaves.length; i++) { final CheckboxPreference slave= slaves[i]; slave.addObserver(new Observer() { public void update(Observable o, Object arg) { if (slave.getChecked()) { fSelectedCount++; } else { fSelectedCount--; } } }); } if (master.getChecked()) { for (int i= 0; i < slaves.length; i++) { if (slaves[i].getChecked()) { fSelectedCount++; } } } } private void internalRegisterSlavePreference(final CheckboxPreference master, final ButtonPreference[] slaves) { master.addObserver( new Observer() { public void update(Observable o, Object arg) { for (int i= 0; i < slaves.length; i++) { slaves[i].setEnabled(master.getChecked()); } } }); for (int i= 0; i < slaves.length; i++) { slaves[i].setEnabled(master.getChecked()); } } protected void intent(Composite group) { Label l= new Label(group, SWT.NONE); GridData gd= new GridData(); gd.widthHint= fPixelConverter.convertWidthInCharsToPixels(4); l.setLayoutData(gd); } }