/*******************************************************************************
 * Copyright (c) 2004, 2008 Tasktop Technologies 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:
 *     Tasktop Technologies - initial API and implementation
 *******************************************************************************/

package org.eclipse.mylyn.internal.java.ui.editor;

import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.jdt.ui.text.folding.IJavaFoldingPreferenceBlock;
import org.eclipse.mylyn.commons.core.StatusHandler;
import org.eclipse.mylyn.internal.java.ui.JavaUiBridgePlugin;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;

/**
 * @author Mik Kersten
 */
public class AutoFoldPreferenceBlock implements IJavaFoldingPreferenceBlock {

	// XXX never read
	// private IPreferenceStore preferences;
	// private Map checkBoxes = new HashMap();
	// private Text minimumLines;

	public AutoFoldPreferenceBlock() {
		// preferences = ContextCore.getPreferenceStore(); XXX
		// never used
	}

	public Control createControl(Composite parent) {
		try {
			Composite inner = new Composite(parent, SWT.NONE);
			GridLayout layout = new GridLayout(1, true);
			layout.verticalSpacing = 3;
			layout.marginWidth = 0;
			inner.setLayout(layout);

			Label label = new Label(inner, SWT.LEFT);
			label.setText(Messages.AutoFoldPreferenceBlock_Elements_of_low_interest_will_be_automatically_folded);

			// Label label= new Label(inner, SWT.LEFT);
			// label.setText( "collapse.title"); //$NON-NLS-1$

			// addCheckBox(inner, "collapse.header", "collapse.header", 0);
			// //$NON-NLS-1$
			// addCheckBox(inner, "collapse.imports",
			// FoldingKeys.COLLAPSE_IMPORTS, 0); //$NON-NLS-1$
			// addCheckBox(inner, "collapse.inner_type",
			// FoldingKeys.COLLAPSE_INNER_TYPES, 0); //$NON-NLS-1$
			// addCheckBox(inner, "collapse.static_initializers",
			// FoldingKeys.COLLAPSE_STATICS, 0); //$NON-NLS-1$
			//				
			// addCheckBox(inner, "collapse.comment_blocks",
			// FoldingKeys.COLLAPSE_COMMENT_BLOCKS, 0); //$NON-NLS-1$
			// addCheckBox(inner, "collapse.javadocs",
			// FoldingKeys.COLLAPSE_JAVADOCS, 0); //$NON-NLS-1$

			// Label label2 = new Label(inner, SWT.LEFT);
			// label2.setText( "minSize.title");
			//		
			// minimumLines = new Text(inner, SWT.BORDER | SWT.SINGLE);
			// GridData gd= new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
			// gd.horizontalSpan= 1;
			// gd.grabExcessVerticalSpace= false;
			// minimumLines.setLayoutData(gd);

			return inner;
		} catch (Throwable t) {
			StatusHandler.fail(new Status(IStatus.ERROR, JavaUiBridgePlugin.ID_PLUGIN,
					"Could not create folding preferences page", t)); //$NON-NLS-1$
		}
		return null;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.eclipse.jdt.ui.text.folding.IJavaFoldingPreferenceBlock#initialize()
	 */
	public void initialize() {

		// Iterator it= checkBoxes.keySet().iterator();
		// while (it.hasNext()) {
		// Button b= (Button) it.next();
		// String key= (String) checkBoxes.get(b);
		// b.setSelection(preferences.getBoolean(key));
		// }

		// minimumLines.setText(String.valueOf(preferences.getInt(FoldingKeys.MINIMUM_SIZE)));

	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.eclipse.jdt.ui.text.folding.IJavaFoldingPreferenceBlock#performOk()
	 */
	public void performOk() {
		// Iterator it = checkBoxes.keySet().iterator();
		// while(it.hasNext()) {
		// Button b = (Button) it.next();
		// String key = (String) checkBoxes.get(b);
		// preferences.setValue(key, b.getSelection());
		// }
		//		
		// int minLines = Integer.parseInt(minimumLines.getText());
		// preferences.setValue(FoldingKeys.MINIMUM_SIZE, minLines);

	}

	// private Button addCheckBox(Composite parent, String label, String key,
	// int indentation) {
	// Button checkBox= new Button(parent, SWT.CHECK);
	// checkBox.setText(label);
	//		
	// GridData gd= new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
	// gd.horizontalIndent= indentation;
	// gd.horizontalSpan= 1;
	// gd.grabExcessVerticalSpace= false;
	// checkBox.setLayoutData(gd);
	//				
	// checkBoxes.put(checkBox, key);
	//		
	// return checkBox;
	// }

	public void performDefaults() {
		initialize();
	}

	public void dispose() {
		// don't care if we are disposed

	}

}
