/*
* Licensed to the Apache Software Foundation ( ASF ) under one
* or more contributor license agreements . See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership . The ASF licenses this file
* to you under the Apache License , Version 2 . 0 ( the
* " License " ) ; you may not use this file except in compliance
* with the License . You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing ,
* software distributed under the License is distributed on an
* " AS IS " BASIS , WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND , either express or implied . See the License for the
* specific language governing permissions and limitations
* under the License .
*/
package org.netbeans.modules.git;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.MissingResourceException;
import java.io.File;
import java.util.Set;
import java.util.logging.Logger;
import java.util.prefs.PreferenceChangeEvent;
import java.util.prefs.PreferenceChangeListener;
import org.netbeans.modules.versioning.spi.VCSAnnotator;
import org.netbeans.modules.versioning.spi.VCSHistoryProvider;
import org.netbeans.modules.versioning.spi.VCSInterceptor;
import org.netbeans.modules.versioning.spi.VersioningSystem;
import org.netbeans.spi.queries.CollocationQueryImplementation;
/**
*
* @ author ondra
*/
@VersioningSystem.Registration(
displayName="#CTL_Git_DisplayName" ,
menuLabel="#CTL_Git_MainMenu" ,
metadataFolderNames={".git" },
actionsCategory="Git"
)
public class GitVCS extends VersioningSystem implements PropertyChangeListener, PreferenceChangeListener {
private static final Logger LOG = Logger.getLogger("org.netbeans.modules.git.GitVCS" ); //NOI18N
public GitVCS() {
putProperty(PROP_DISPLAY_NAME, getDisplayName());
putProperty(PROP_MENU_LABEL, org.openide.util.NbBundle.getMessage(GitVCS.class , "CTL_Git_MainMenu" )); // NOI18N
GitModuleConfig.getDefault().getPreferences().addPreferenceChangeListener(this );
Git.getInstance().registerGitVCS(this );
}
public static String getDisplayName() throws MissingResourceException {
return org.openide.util.NbBundle.getMessage(GitVCS.class , "CTL_Git_DisplayName" );
}
@Override
public VCSAnnotator getVCSAnnotator () {
return Git.getInstance().getVCSAnnotator();
}
@Override
public VCSInterceptor getVCSInterceptor () {
return Git.getInstance().getVCSInterceptor();
}
@Override
public void getOriginalFile (File workingCopy, File originalFile) {
Git.getInstance().getOriginalFile(workingCopy, originalFile);
}
@Override
public File getTopmostManagedAncestor(File file) {
return Git.getInstance().getTopmostManagedAncestor(file);
}
@Override
public CollocationQueryImplementation getCollocationQueryImplementation() {
return collocationQueryImplementation;
}
@Override
public VCSHistoryProvider getVCSHistoryProvider() {
return Git.getInstance().getHistoryProvider();
}
private final CollocationQueryImplementation collocationQueryImplementation = new CollocationQueryImplementation() {
@Override
public boolean areCollocated(File a, File b) {
File fra = getTopmostManagedAncestor(a);
File frb = getTopmostManagedAncestor(b);
if (fra == null || !fra.equals(frb)) return false ;
return true ;
}
@Override
public File findRoot(File file) {
return getTopmostManagedAncestor(file);
}
};
@Override
@SuppressWarnings("unchecked" )
public void propertyChange(PropertyChangeEvent event) {
if (event.getPropertyName().equals(FileStatusCache.PROP_FILE_STATUS_CHANGED)) {
FileStatusCache.ChangedEvent changedEvent = (FileStatusCache.ChangedEvent) event.getNewValue();
fireStatusChanged(changedEvent.getFile());
} else if (event.getPropertyName().equals(Git.PROP_ANNOTATIONS_CHANGED)) {
fireAnnotationsChanged((Set<File>) event.getNewValue());
} else if (event.getPropertyName().equals(Git.PROP_VERSIONED_FILES_CHANGED)) {
LOG.fine("cleaning unversioned parents cache" ); //NOI18N
Git.getInstance().clearAncestorCaches();
fireVersionedFilesChanged();
}
}
void refreshStatus (Set<File> files) {
fireStatusChanged(files == null || files.isEmpty() ? null : files);
}
@Override
public void preferenceChange(PreferenceChangeEvent evt) {
if (evt.getKey().startsWith(GitModuleConfig.PROP_COMMIT_EXCLUSIONS)) {
fireStatusChanged((Set<File>) null );
}
}
}
Messung V0.5 in Prozent C=96 H=84 G=90
¤ Dauer der Verarbeitung: 0.3 Sekunden
¤
*© Formatika GbR, Deutschland