org.eclipse.egit.ui.internal.dialogs.CommitMessageComponentStateManager.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.egit.ui.internal.dialogs.CommitMessageComponentStateManager.java

Source

/*******************************************************************************
 * Copyright (C) 2011, Jens Baumgart <jens.baumgart@sap.com>
 *
 * 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
 *******************************************************************************/
package org.eclipse.egit.ui.internal.dialogs;

import org.eclipse.egit.ui.Activator;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.Repository;

/**
 * This class is used to load / save the state of a
 * {@link CommitMessageComponentState} in the dialog settings.
 *
 */
public class CommitMessageComponentStateManager {

    private static final String COMMIT_MESSAGE_COMPONENT_SECTION = "GitCommitMessageComponent"; //$NON-NLS-1$

    private static final String EMPTY = "empty"; //$NON-NLS-1$

    private static final int MEMBER_COUNT = 5; // number of members in
    // CommitMessageComponentState

    /**
     * @param repository
     * @param state
     */
    public static void persistState(Repository repository, CommitMessageComponentState state) {
        IDialogSettings dialogSettings = getDialogSettings();
        String[] values = new String[] { Boolean.toString(state.getAmend()), state.getAuthor(),
                state.getCommitMessage(), state.getCommitter(), state.getHeadCommit().getName().toString() };
        dialogSettings.put(repository.getDirectory().getAbsolutePath(), values);
    }

    /**
     * @param repository
     * @return state
     */
    public static CommitMessageComponentState loadState(Repository repository) {
        IDialogSettings dialogSettings = getDialogSettings();
        String[] values = dialogSettings.getArray(repository.getDirectory().getAbsolutePath());
        if (values == null || values.length < MEMBER_COUNT)
            return null;
        CommitMessageComponentState state = new CommitMessageComponentState();
        state.setAmend(Boolean.parseBoolean(values[0]));
        state.setAuthor(values[1]);
        state.setCommitMessage(values[2]);
        state.setCommitter(values[3]);
        state.setHeadCommit(ObjectId.fromString(values[4]));
        return state;
    }

    private static IDialogSettings getDialogSettings() {
        IDialogSettings settings = Activator.getDefault().getDialogSettings();
        IDialogSettings section = settings.getSection(COMMIT_MESSAGE_COMPONENT_SECTION);
        if (section == null)
            section = settings.addNewSection(COMMIT_MESSAGE_COMPONENT_SECTION);
        return section;
    }

    /**
     * @param repository
     */
    public static void deleteState(Repository repository) {
        IDialogSettings dialogSettings = getDialogSettings();
        String key = repository.getDirectory().getAbsolutePath();
        if (dialogSettings != null && dialogSettings.getArray(key) != null)
            dialogSettings.put(key, new String[] { EMPTY });
    }

}