Refactor some things
This commit is contained in:
parent
fa4b90bd72
commit
5261155996
@ -4,7 +4,7 @@ Bundle-Name: ShareClient
|
|||||||
Bundle-SymbolicName: ShareClient;singleton:=true
|
Bundle-SymbolicName: ShareClient;singleton:=true
|
||||||
Bundle-Version: 1.0.0
|
Bundle-Version: 1.0.0
|
||||||
Import-Package: javax.inject;version="[1.0.0,2.0.0)"
|
Import-Package: javax.inject;version="[1.0.0,2.0.0)"
|
||||||
Bundle-Activator: me.mrletsplay.shareclient.Activator
|
Bundle-Activator: me.mrletsplay.shareclient.ShareClient
|
||||||
Require-Bundle: org.eclipse.ui,
|
Require-Bundle: org.eclipse.ui,
|
||||||
org.eclipse.core.runtime,
|
org.eclipse.core.runtime,
|
||||||
org.eclipse.ui.editors;bundle-version="3.17.0",
|
org.eclipse.ui.editors;bundle-version="3.17.0",
|
||||||
|
@ -6,11 +6,11 @@
|
|||||||
point="org.eclipse.ui.commands">
|
point="org.eclipse.ui.commands">
|
||||||
<category
|
<category
|
||||||
id="ShareClient.commands.category"
|
id="ShareClient.commands.category"
|
||||||
name="Sample Category">
|
name="Share Client">
|
||||||
</category>
|
</category>
|
||||||
<command
|
<command
|
||||||
categoryId="ShareClient.commands.category"
|
categoryId="ShareClient.commands.category"
|
||||||
name="Sample Command"
|
name="Share Project"
|
||||||
id="ShareClient.commands.shareProjectCommand">
|
id="ShareClient.commands.shareProjectCommand">
|
||||||
</command>
|
</command>
|
||||||
</extension>
|
</extension>
|
||||||
@ -60,13 +60,13 @@
|
|||||||
point="org.eclipse.ui.views">
|
point="org.eclipse.ui.views">
|
||||||
<category
|
<category
|
||||||
id="me.mrletsplay.shareclient"
|
id="me.mrletsplay.shareclient"
|
||||||
name="ShareClient">
|
name="Share Client">
|
||||||
</category>
|
</category>
|
||||||
<view
|
<view
|
||||||
category="me.mrletsplay.shareclient"
|
category="me.mrletsplay.shareclient"
|
||||||
class="me.mrletsplay.shareclient.views.ShareView"
|
class="me.mrletsplay.shareclient.views.ShareView"
|
||||||
icon="icons/icon.png"
|
icon="icons/icon.png"
|
||||||
id="shareclient.views.SampleView"
|
id="me.mrletsplay.shareclient.views.ShareView"
|
||||||
inject="true"
|
inject="true"
|
||||||
name="Share Client">
|
name="Share Client">
|
||||||
</view>
|
</view>
|
||||||
|
@ -1,99 +0,0 @@
|
|||||||
package me.mrletsplay.shareclient;
|
|
||||||
|
|
||||||
import java.net.URI;
|
|
||||||
import java.util.Random;
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
import org.eclipse.jface.dialogs.MessageDialog;
|
|
||||||
import org.eclipse.ui.plugin.AbstractUIPlugin;
|
|
||||||
import org.osgi.framework.BundleContext;
|
|
||||||
|
|
||||||
import me.mrletsplay.shareclientcore.connection.ConnectionException;
|
|
||||||
import me.mrletsplay.shareclientcore.connection.RemoteConnection;
|
|
||||||
import me.mrletsplay.shareclientcore.connection.WebSocketConnection;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The activator class controls the plug-in life cycle
|
|
||||||
*/
|
|
||||||
public class Activator extends AbstractUIPlugin {
|
|
||||||
|
|
||||||
// The plug-in ID
|
|
||||||
public static final String PLUGIN_ID = "ShareClient"; //$NON-NLS-1$
|
|
||||||
|
|
||||||
// The shared instance
|
|
||||||
private static Activator plugin;
|
|
||||||
|
|
||||||
private RemoteConnection activeConnection;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The constructor
|
|
||||||
*/
|
|
||||||
public Activator() {
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void start(BundleContext context) throws Exception {
|
|
||||||
super.start(context);
|
|
||||||
plugin = this;
|
|
||||||
|
|
||||||
System.out.println("STARTING");
|
|
||||||
getPreferenceStore().setDefault(ShareClientPreferences.SERVER_URI, "ws://localhost:5473");
|
|
||||||
// new ShareWSClient(URI.create("ws://localhost:5473")).connect();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void stop(BundleContext context) throws Exception {
|
|
||||||
plugin = null;
|
|
||||||
super.stop(context);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the shared instance
|
|
||||||
*
|
|
||||||
* @return the shared instance
|
|
||||||
*/
|
|
||||||
public static Activator getDefault() {
|
|
||||||
return plugin;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RemoteConnection openConnection(String sessionID) {
|
|
||||||
String serverURI = getPreferenceStore().getString(ShareClientPreferences.SERVER_URI);
|
|
||||||
if(serverURI == null) return null;
|
|
||||||
|
|
||||||
String username = getPreferenceStore().getString(ShareClientPreferences.USERNAME);
|
|
||||||
if(username == null || username.isBlank()) username = "user" + new Random().nextInt(1000);
|
|
||||||
|
|
||||||
activeConnection = new WebSocketConnection(URI.create(serverURI), username);
|
|
||||||
try {
|
|
||||||
activeConnection.connect(sessionID); // TODO: connect to existing session
|
|
||||||
} catch (ConnectionException e) {
|
|
||||||
MessageDialog.openInformation(
|
|
||||||
null,
|
|
||||||
"Share Client",
|
|
||||||
"Failed to connect to server: " + e);
|
|
||||||
activeConnection = null;
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return activeConnection;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RemoteConnection getOrOpenConnection() {
|
|
||||||
if(activeConnection == null) {
|
|
||||||
openConnection(UUID.randomUUID().toString());
|
|
||||||
}
|
|
||||||
|
|
||||||
return activeConnection;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void closeConnection() {
|
|
||||||
if(activeConnection == null) return;
|
|
||||||
activeConnection.disconnect();
|
|
||||||
activeConnection = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RemoteConnection getActiveConnection() {
|
|
||||||
return activeConnection;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
166
src/main/java/me/mrletsplay/shareclient/ShareClient.java
Normal file
166
src/main/java/me/mrletsplay/shareclient/ShareClient.java
Normal file
@ -0,0 +1,166 @@
|
|||||||
|
package me.mrletsplay.shareclient;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.net.URI;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Random;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import org.eclipse.core.resources.IProject;
|
||||||
|
import org.eclipse.core.resources.ResourcesPlugin;
|
||||||
|
import org.eclipse.jface.dialogs.MessageDialog;
|
||||||
|
import org.eclipse.swt.widgets.Display;
|
||||||
|
import org.eclipse.ui.plugin.AbstractUIPlugin;
|
||||||
|
import org.osgi.framework.BundleContext;
|
||||||
|
|
||||||
|
import me.mrletsplay.shareclient.util.Peer;
|
||||||
|
import me.mrletsplay.shareclient.util.ProjectRelativePath;
|
||||||
|
import me.mrletsplay.shareclient.views.ShareView;
|
||||||
|
import me.mrletsplay.shareclientcore.connection.ConnectionException;
|
||||||
|
import me.mrletsplay.shareclientcore.connection.MessageListener;
|
||||||
|
import me.mrletsplay.shareclientcore.connection.RemoteConnection;
|
||||||
|
import me.mrletsplay.shareclientcore.connection.WebSocketConnection;
|
||||||
|
import me.mrletsplay.shareclientcore.connection.message.FullSyncMessage;
|
||||||
|
import me.mrletsplay.shareclientcore.connection.message.Message;
|
||||||
|
import me.mrletsplay.shareclientcore.connection.message.PeerJoinMessage;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The activator class controls the plug-in life cycle
|
||||||
|
*/
|
||||||
|
public class ShareClient extends AbstractUIPlugin implements MessageListener {
|
||||||
|
|
||||||
|
// The plug-in ID
|
||||||
|
public static final String PLUGIN_ID = "ShareClient"; //$NON-NLS-1$
|
||||||
|
|
||||||
|
// The shared instance
|
||||||
|
private static ShareClient plugin;
|
||||||
|
|
||||||
|
private RemoteConnection activeConnection;
|
||||||
|
private ShareView view;
|
||||||
|
private List<Peer> peers;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The constructor
|
||||||
|
*/
|
||||||
|
public ShareClient() {
|
||||||
|
this.peers = new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void start(BundleContext context) throws Exception {
|
||||||
|
super.start(context);
|
||||||
|
plugin = this;
|
||||||
|
|
||||||
|
getPreferenceStore().setDefault(ShareClientPreferences.SERVER_URI, "ws://localhost:5473");
|
||||||
|
// new ShareWSClient(URI.create("ws://localhost:5473")).connect();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void stop(BundleContext context) throws Exception {
|
||||||
|
plugin = null;
|
||||||
|
super.stop(context);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the shared instance
|
||||||
|
*
|
||||||
|
* @return the shared instance
|
||||||
|
*/
|
||||||
|
public static ShareClient getDefault() {
|
||||||
|
return plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateView() {
|
||||||
|
if(view == null) return;
|
||||||
|
Display.getDefault().asyncExec(() -> view.getViewer().setInput(peers.stream().map(p -> p.name()).toArray(String[]::new)));
|
||||||
|
}
|
||||||
|
|
||||||
|
public RemoteConnection openConnection(String sessionID) {
|
||||||
|
String serverURI = getPreferenceStore().getString(ShareClientPreferences.SERVER_URI);
|
||||||
|
if(serverURI == null) return null;
|
||||||
|
|
||||||
|
String username = getPreferenceStore().getString(ShareClientPreferences.USERNAME);
|
||||||
|
if(username == null || username.isBlank()) username = "user" + new Random().nextInt(1000);
|
||||||
|
|
||||||
|
WebSocketConnection connection = new WebSocketConnection(URI.create(serverURI), username);
|
||||||
|
try {
|
||||||
|
connection.connect(sessionID); // TODO: connect to existing session
|
||||||
|
} catch (ConnectionException e) {
|
||||||
|
MessageDialog.openInformation(
|
||||||
|
null,
|
||||||
|
"Share Client",
|
||||||
|
"Failed to connect to server: " + e);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
connection.addListener(this);
|
||||||
|
|
||||||
|
return activeConnection = connection;
|
||||||
|
}
|
||||||
|
|
||||||
|
public RemoteConnection getOrOpenConnection() {
|
||||||
|
if(activeConnection == null) {
|
||||||
|
openConnection(UUID.randomUUID().toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
return activeConnection;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void closeConnection() {
|
||||||
|
if(activeConnection == null) return;
|
||||||
|
activeConnection.disconnect();
|
||||||
|
activeConnection = null;
|
||||||
|
peers.clear();
|
||||||
|
updateView();
|
||||||
|
}
|
||||||
|
|
||||||
|
public RemoteConnection getActiveConnection() {
|
||||||
|
return activeConnection;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setView(ShareView view) {
|
||||||
|
this.view = view;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ShareView getView() {
|
||||||
|
return view;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onMessage(Message message) {
|
||||||
|
System.out.println("Got: " + message);
|
||||||
|
if(message instanceof PeerJoinMessage join) {
|
||||||
|
peers.add(new Peer(join.peerName(), join.peerSiteID()));
|
||||||
|
updateView();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(message instanceof FullSyncMessage sync) {
|
||||||
|
// TODO: handle FULL_SYNC
|
||||||
|
ProjectRelativePath path;
|
||||||
|
try {
|
||||||
|
path = ProjectRelativePath.of(sync.documentPath());
|
||||||
|
}catch(IllegalArgumentException e) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(path.projectName());
|
||||||
|
if(project == null) return; // TODO: create project
|
||||||
|
|
||||||
|
Path filePath = project.getLocation().toPath().resolve(path.relativePath());
|
||||||
|
try {
|
||||||
|
if(!Files.exists(filePath)) {
|
||||||
|
Files.createDirectories(filePath.getParent());
|
||||||
|
Files.createFile(filePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
Files.write(filePath, sync.content());
|
||||||
|
} catch (IOException e) {
|
||||||
|
// TODO: handle exception
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -10,7 +10,7 @@ public class ShareClientPreferencePage extends FieldEditorPreferencePage impleme
|
|||||||
|
|
||||||
public ShareClientPreferencePage() {
|
public ShareClientPreferencePage() {
|
||||||
// super(GRID);
|
// super(GRID);
|
||||||
setPreferenceStore(Activator.getDefault().getPreferenceStore());
|
setPreferenceStore(ShareClient.getDefault().getPreferenceStore());
|
||||||
setDescription("Share Client Preferences");
|
setDescription("Share Client Preferences");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ import org.eclipse.jface.viewers.IStructuredSelection;
|
|||||||
import org.eclipse.ui.IWorkbenchWindow;
|
import org.eclipse.ui.IWorkbenchWindow;
|
||||||
import org.eclipse.ui.handlers.HandlerUtil;
|
import org.eclipse.ui.handlers.HandlerUtil;
|
||||||
|
|
||||||
import me.mrletsplay.shareclient.Activator;
|
import me.mrletsplay.shareclient.ShareClient;
|
||||||
import me.mrletsplay.shareclientcore.connection.RemoteConnection;
|
import me.mrletsplay.shareclientcore.connection.RemoteConnection;
|
||||||
|
|
||||||
public class ShareProjectHandler extends AbstractHandler {
|
public class ShareProjectHandler extends AbstractHandler {
|
||||||
@ -32,7 +32,7 @@ public class ShareProjectHandler extends AbstractHandler {
|
|||||||
IPath path = project.getLocation();
|
IPath path = project.getLocation();
|
||||||
if(path == null) return null;
|
if(path == null) return null;
|
||||||
|
|
||||||
RemoteConnection con = Activator.getDefault().getOrOpenConnection();
|
RemoteConnection con = ShareClient.getDefault().getOrOpenConnection();
|
||||||
if(con == null) return null;
|
if(con == null) return null;
|
||||||
|
|
||||||
// TODO: handle case when adding project to existing session
|
// TODO: handle case when adding project to existing session
|
||||||
|
3
src/main/java/me/mrletsplay/shareclient/util/Peer.java
Normal file
3
src/main/java/me/mrletsplay/shareclient/util/Peer.java
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
package me.mrletsplay.shareclient.util;
|
||||||
|
|
||||||
|
public record Peer(String name, int siteID) {}
|
@ -1,16 +1,10 @@
|
|||||||
package me.mrletsplay.shareclient.views;
|
package me.mrletsplay.shareclient.views;
|
||||||
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.nio.file.Files;
|
|
||||||
import java.nio.file.Path;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
import org.eclipse.core.resources.IProject;
|
|
||||||
import org.eclipse.core.resources.ResourcesPlugin;
|
import org.eclipse.core.resources.ResourcesPlugin;
|
||||||
import org.eclipse.jface.action.Action;
|
import org.eclipse.jface.action.Action;
|
||||||
import org.eclipse.jface.action.IToolBarManager;
|
import org.eclipse.jface.action.IToolBarManager;
|
||||||
@ -26,18 +20,16 @@ import org.eclipse.jface.viewers.TableViewer;
|
|||||||
import org.eclipse.swt.SWT;
|
import org.eclipse.swt.SWT;
|
||||||
import org.eclipse.swt.graphics.Image;
|
import org.eclipse.swt.graphics.Image;
|
||||||
import org.eclipse.swt.widgets.Composite;
|
import org.eclipse.swt.widgets.Composite;
|
||||||
import org.eclipse.swt.widgets.Display;
|
|
||||||
import org.eclipse.ui.IActionBars;
|
import org.eclipse.ui.IActionBars;
|
||||||
|
import org.eclipse.ui.IViewSite;
|
||||||
import org.eclipse.ui.IWorkbench;
|
import org.eclipse.ui.IWorkbench;
|
||||||
|
import org.eclipse.ui.PartInitException;
|
||||||
import org.eclipse.ui.dialogs.PreferencesUtil;
|
import org.eclipse.ui.dialogs.PreferencesUtil;
|
||||||
import org.eclipse.ui.part.ViewPart;
|
import org.eclipse.ui.part.ViewPart;
|
||||||
|
|
||||||
import me.mrletsplay.shareclient.Activator;
|
import me.mrletsplay.shareclient.ShareClient;
|
||||||
import me.mrletsplay.shareclient.util.ProjectRelativePath;
|
|
||||||
import me.mrletsplay.shareclientcore.connection.ConnectionException;
|
import me.mrletsplay.shareclientcore.connection.ConnectionException;
|
||||||
import me.mrletsplay.shareclientcore.connection.RemoteConnection;
|
import me.mrletsplay.shareclientcore.connection.RemoteConnection;
|
||||||
import me.mrletsplay.shareclientcore.connection.message.FullSyncMessage;
|
|
||||||
import me.mrletsplay.shareclientcore.connection.message.PeerJoinMessage;
|
|
||||||
import me.mrletsplay.shareclientcore.connection.message.RequestFullSyncMessage;
|
import me.mrletsplay.shareclientcore.connection.message.RequestFullSyncMessage;
|
||||||
|
|
||||||
public class ShareView extends ViewPart {
|
public class ShareView extends ViewPart {
|
||||||
@ -51,8 +43,6 @@ public class ShareView extends ViewPart {
|
|||||||
|
|
||||||
private TableViewer viewer;
|
private TableViewer viewer;
|
||||||
|
|
||||||
private List<String> peerNames = new ArrayList<>();
|
|
||||||
|
|
||||||
class ViewLabelProvider extends LabelProvider implements ITableLabelProvider {
|
class ViewLabelProvider extends LabelProvider implements ITableLabelProvider {
|
||||||
@Override
|
@Override
|
||||||
public String getColumnText(Object obj, int index) {
|
public String getColumnText(Object obj, int index) {
|
||||||
@ -68,12 +58,25 @@ public class ShareView extends ViewPart {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init(IViewSite site) throws PartInitException {
|
||||||
|
super.init(site);
|
||||||
|
System.out.println(ShareClient.getDefault());
|
||||||
|
ShareClient.getDefault().setView(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void dispose() {
|
||||||
|
super.dispose();
|
||||||
|
ShareClient.getDefault().setView(null);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void createPartControl(Composite parent) {
|
public void createPartControl(Composite parent) {
|
||||||
viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
|
viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
|
||||||
|
|
||||||
viewer.setContentProvider(ArrayContentProvider.getInstance());
|
viewer.setContentProvider(ArrayContentProvider.getInstance());
|
||||||
viewer.setInput(new String[] {});
|
viewer.setInput(new String[0]);
|
||||||
viewer.setLabelProvider(new ViewLabelProvider());
|
viewer.setLabelProvider(new ViewLabelProvider());
|
||||||
|
|
||||||
// Create the help context id for the viewer's control
|
// Create the help context id for the viewer's control
|
||||||
@ -103,69 +106,34 @@ public class ShareView extends ViewPart {
|
|||||||
input.setBlockOnOpen(true);
|
input.setBlockOnOpen(true);
|
||||||
if(input.open() != InputDialog.OK) return;
|
if(input.open() != InputDialog.OK) return;
|
||||||
|
|
||||||
RemoteConnection connection = Activator.getDefault().getActiveConnection();
|
RemoteConnection connection = ShareClient.getDefault().getActiveConnection();
|
||||||
if(connection != null) connection.disconnect();
|
if(connection != null) connection.disconnect();
|
||||||
|
|
||||||
connection = Activator.getDefault().openConnection(input.getValue());
|
connection = ShareClient.getDefault().openConnection(input.getValue());
|
||||||
if(connection == null) return;
|
if(connection == null) return;
|
||||||
|
|
||||||
connection.addListener(m -> {
|
|
||||||
System.out.println("Got: " + m);
|
|
||||||
if(m instanceof PeerJoinMessage join) {
|
|
||||||
peerNames.add(join.peerName());
|
|
||||||
Display.getDefault().asyncExec(() -> viewer.setInput(peerNames.toArray(String[]::new)));
|
|
||||||
}
|
|
||||||
|
|
||||||
if(m instanceof FullSyncMessage sync) {
|
|
||||||
// TODO: handle FULL_SYNC
|
|
||||||
ProjectRelativePath path;
|
|
||||||
try {
|
|
||||||
path = ProjectRelativePath.of(sync.documentPath());
|
|
||||||
}catch(IllegalArgumentException e) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(path.projectName());
|
|
||||||
if(project == null) return; // TODO: create project
|
|
||||||
|
|
||||||
Path filePath = project.getLocation().toPath().resolve(path.relativePath());
|
|
||||||
try {
|
|
||||||
if(!Files.exists(filePath)) {
|
|
||||||
Files.createDirectories(filePath.getParent());
|
|
||||||
Files.createFile(filePath);
|
|
||||||
}
|
|
||||||
|
|
||||||
Files.write(filePath, sync.content());
|
|
||||||
} catch (IOException e) {
|
|
||||||
// TODO: handle exception
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
connection.send(new RequestFullSyncMessage(connection.getSiteID(), null));
|
connection.send(new RequestFullSyncMessage(connection.getSiteID(), null));
|
||||||
updateActionBars();
|
updateActionBars();
|
||||||
} catch (ConnectionException e) {
|
} catch (ConnectionException e) {
|
||||||
Activator.getDefault().closeConnection();
|
ShareClient.getDefault().closeConnection();
|
||||||
showMessage("Failed to send: " + e);
|
showMessage("Failed to send: " + e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
if(Activator.getDefault().getActiveConnection() == null) toolbars.add(joinSession);
|
if(ShareClient.getDefault().getActiveConnection() == null) toolbars.add(joinSession);
|
||||||
|
|
||||||
Action leaveSession = new Action("Leave session", ImageDescriptor.createFromFile(ShareView.class, "/icons/stop.png")) {
|
Action leaveSession = new Action("Leave session", ImageDescriptor.createFromFile(ShareView.class, "/icons/stop.png")) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
Activator.getDefault().closeConnection();
|
ShareClient.getDefault().closeConnection();
|
||||||
peerNames.clear();
|
|
||||||
viewer.setInput(peerNames.toArray(String[]::new));
|
|
||||||
updateActionBars();
|
updateActionBars();
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
if(Activator.getDefault().getActiveConnection() != null) toolbars.add(leaveSession);
|
if(ShareClient.getDefault().getActiveConnection() != null) toolbars.add(leaveSession);
|
||||||
|
|
||||||
Action showSettings = new Action("Settings", ImageDescriptor.createFromFile(ShareView.class, "/icons/cog.png")) {
|
Action showSettings = new Action("Settings", ImageDescriptor.createFromFile(ShareView.class, "/icons/cog.png")) {
|
||||||
|
|
||||||
@ -190,6 +158,10 @@ public class ShareView extends ViewPart {
|
|||||||
message);
|
message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public TableViewer getViewer() {
|
||||||
|
return viewer;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setFocus() {
|
public void setFocus() {
|
||||||
viewer.getControl().setFocus();
|
viewer.getControl().setFocus();
|
||||||
|
Loading…
Reference in New Issue
Block a user