package org.activityinfo.ui.client.local.command;
/*
* #%L
* ActivityInfo Server
* %%
* Copyright (C) 2009 - 2013 UNICEF
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
*/
import com.extjs.gxt.ui.client.widget.Status;
import com.extjs.gxt.ui.client.widget.tips.ToolTip;
import com.extjs.gxt.ui.client.widget.tips.ToolTipConfig;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import org.activityinfo.ui.client.EventBus;
import org.activityinfo.ui.client.local.ui.SyncStatusResources;
@Singleton
public class OutOfSyncStatus extends Status implements OutOfSyncMonitor.View {
private ToolTip tip = null;
@Inject
public OutOfSyncStatus(EventBus eventBus) {
new OutOfSyncMonitor(eventBus, this);
createToolTip();
}
private void createToolTip() {
if (this.tip == null) {
ToolTipConfig config = new ToolTipConfig();
config.setTitle("Out of Sync");
config.setText("You have recently sent an update directly to the server.<br>" +
"Your change will not be visible locally until you synchronize.");
config.setShowDelay(1);
this.tip = new ToolTip(this, config);
}
}
@Override
public void show() {
setIconStyle(SyncStatusResources.INSTANCE.style().warningIcon());
setText("Your local copy is out sync with the sever");
setBox(true);
createTip();
}
@Override
public void hide() {
setBox(false);
setIconStyle(null);
setText(null);
}
private ToolTip createTip() {
ToolTipConfig config = new ToolTipConfig();
config.setAnchor("top");
config.setCloseable(false);
config.setText("Your local database is out of sync with the server. Please wait while synchronization " +
"completes");
ToolTip tip = new ToolTip();
tip.update(config);
return tip;
}
}