/*
* ObjectExplorerEditingTarget.java
*
* Copyright (C) 2009-15 by RStudio, Inc.
*
* Unless you have received this program directly from RStudio pursuant
* to the terms of a commercial license agreement with RStudio, then
* this program is licensed to you under the terms of version 3 of the
* GNU Affero General Public License. This program is distributed WITHOUT
* ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING THOSE OF NON-INFRINGEMENT,
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Please refer to the
* AGPL (http://www.gnu.org/licenses/agpl-3.0.txt) for more details.
*
*/
package org.rstudio.studio.client.workbench.views.source.editors.explorer;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.user.client.ui.Widget;
import com.google.inject.Inject;
import org.rstudio.core.client.resources.ImageResource2x;
import org.rstudio.core.client.widget.SimplePanelWithProgress;
import org.rstudio.studio.client.application.events.EventBus;
import org.rstudio.studio.client.common.GlobalDisplay;
import org.rstudio.studio.client.common.filetypes.FileIconResources;
import org.rstudio.studio.client.workbench.commands.Commands;
import org.rstudio.studio.client.workbench.views.source.editors.explorer.model.ObjectExplorerHandle;
import org.rstudio.studio.client.workbench.views.source.editors.explorer.view.ObjectExplorerEditingTargetWidget;
import org.rstudio.studio.client.workbench.views.source.editors.urlcontent.UrlContentEditingTarget;
import org.rstudio.studio.client.workbench.views.source.events.PopoutDocEvent;
import org.rstudio.studio.client.workbench.views.source.model.SourceServerOperations;
public class ObjectExplorerEditingTarget
extends UrlContentEditingTarget
{
@Inject
public ObjectExplorerEditingTarget(SourceServerOperations server,
Commands commands,
GlobalDisplay globalDisplay,
EventBus events)
{
super(server, commands, globalDisplay, events);
events_ = events;
isActive_ = false;
}
// Implementation ----
@Override
protected Display createDisplay()
{
progressPanel_ = new SimplePanelWithProgress();
progressPanel_.setSize("100%", "100%");
reloadDisplay();
return new Display()
{
public void print()
{
((Display)progressPanel_.getWidget()).print();
}
public Widget asWidget()
{
return progressPanel_;
}
};
}
@Override
public void onActivate()
{
super.onActivate();
view_.onActivate();
isActive_ = true;
}
@Override
public void onDeactivate()
{
super.onDeactivate();
view_.onDeactivate();
isActive_ = false;
}
@Override
public String getPath()
{
return getHandle().getPath();
}
@Override
public ImageResource getIcon()
{
return new ImageResource2x(FileIconResources.INSTANCE.iconObjectExplorer2x());
}
private ObjectExplorerHandle getHandle()
{
return doc_.getProperties().cast();
}
@Override
protected String getContentTitle()
{
return getHandle().getTitle();
}
@Override
protected String getContentUrl()
{
return getHandle().getPath();
}
@Override
public void popoutDoc()
{
events_.fireEvent(new PopoutDocEvent(getId(), null));
}
// Public methods ----
public void update(ObjectExplorerHandle handle)
{
if (isActive_)
{
// TODO
}
}
// Private methods ----
private void reloadDisplay()
{
if (view_ != null)
{
view_.removeFromParent();
view_ = null;
}
view_ = new ObjectExplorerEditingTargetWidget(getHandle(), doc_);
view_.setSize("100%", "100%");
progressPanel_.setWidget(view_);
}
private SimplePanelWithProgress progressPanel_;
private ObjectExplorerEditingTargetWidget view_;
private final EventBus events_;
private boolean isActive_;
}