blob: 9b4c3cccace802a2ca33dd59706f642470e999cc [file] [log] [blame]
/*
* 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.profiler;
import org.netbeans.api.progress.ProgressHandle;
import org.netbeans.lib.profiler.common.Profiler;
import org.netbeans.lib.profiler.common.event.SimpleProfilingStateAdapter;
import org.netbeans.lib.profiler.global.CommonConstants;
import org.openide.util.NbBundle;
/**
* Monitor of the profiler state which displays status of the server in the main window status bar.
*
* @author Jan Taus
*/
@NbBundle.Messages({
"ServerStateMonitor_ProfilerBusy=Profiler Busy",
"ServerStateMonitor_ServerInitializing=Initializing...",
"ServerStateMonitor_ServerPreparing=Preparing data...",
"ServerStateMonitor_ServerInstrumenting=Instrumenting..."
})
class ServerStateMonitor {
//~ Instance fields ----------------------------------------------------------------------------------------------------------
private final Profiler profiler;
private ProgressHandle progressHandle = null;
private int activeServerState = -1;
private int activeServerProgress = -1;
private int activeServerProgressValue = -1;
//~ Constructors ---------------------------------------------------------------------------------------------------------
ServerStateMonitor(Profiler profiler) {
this.profiler = profiler;
updateProgress();
profiler.addProfilingStateListener(new SimpleProfilingStateAdapter() {
@Override
protected void update() {
updateProgress();
}
});
}
//~ Methods ------------------------------------------------------------------------------------------------------------------
private void updateProgress() {
boolean display = profiler.getProfilingState() != Profiler.PROFILING_INACTIVE &&
profiler.getServerState() != CommonConstants.SERVER_RUNNING;
if (display) {
int serverProgress = profiler.getServerProgress();
int serverState = profiler.getServerState();
if (progressHandle == null) {
progressHandle = ProgressHandle.createHandle(Bundle.ServerStateMonitor_ProfilerBusy());
if (serverProgress == CommonConstants.SERVER_PROGRESS_INDETERMINATE) {
progressHandle.start();
} else {
progressHandle.start(CommonConstants.SERVER_PROGRESS_WORKUNITS);
}
activeServerState = -1;
activeServerProgress = serverProgress;
}
if (serverProgress != activeServerProgress) {
if (activeServerProgress == CommonConstants.SERVER_PROGRESS_INDETERMINATE) {
progressHandle.switchToDeterminate(CommonConstants.SERVER_PROGRESS_WORKUNITS);
progressHandle.progress(serverProgress);
activeServerProgressValue = serverProgress;
} else if (serverProgress == CommonConstants.SERVER_PROGRESS_INDETERMINATE) {
progressHandle.switchToIndeterminate();
} else {
if (serverProgress > activeServerProgressValue) {
progressHandle.progress(serverProgress);
activeServerProgressValue = serverProgress;
}
}
activeServerProgress = serverProgress;
}
if (serverState != activeServerState) {
activeServerState = serverState;
switch (activeServerState) {
case CommonConstants.SERVER_INITIALIZING:
progressHandle.progress(Bundle.ServerStateMonitor_ServerInitializing());
break;
case CommonConstants.SERVER_INSTRUMENTING:
progressHandle.progress(Bundle.ServerStateMonitor_ServerInstrumenting());
break;
case CommonConstants.SERVER_PREPARING:
progressHandle.progress(Bundle.ServerStateMonitor_ServerPreparing());
break;
default:
progressHandle.progress(""); // NOI18N
break;
}
}
} else {
closeProgress();
}
}
private void closeProgress() {
if (progressHandle != null) {
progressHandle.finish();
progressHandle = null;
}
}
}