All pastes #163937 Raw Edit

Unnamed

public text v1 · immutable
·published 2006-09-08 02:28 UTC
rendered paste body
package com.omnicore.nativeinterface.win32;

import com.omnicore.nativeinterface.win32.registry.Win32RegistryInterface;
import com.omnicore.vcs.api.registry.*;
import java.util.*;

// Referenced classes of package com.omnicore.nativeinterface.win32:
//			Win32MailSlotInterface, Win32EventsInterface, Win32MouseWheelListener

public class Win32Interface
{

	Win32Interface()
	{
		listener = null;
		String ucOsName = System.getProperty("os.name").toUpperCase(Locale.US);
		if(ucOsName.matches("WINDOWS +(95|98|ME).*"))
		{
			registryInterface = null;
			mailSlotInterface = null;
			eventsInterface = null;
		} else
		{
			registryInterface = new Win32RegistryInterface();
		}
	}

	public Win32EventsInterface getEventsInterface()
	{
		return eventsInterface;
	}

	public Win32MailSlotInterface getMailSlotInterface()
	{
		return mailSlotInterface;
	}

	public static synchronized Win32Interface getInterface()
	{
		if(instance != null)
			return instance;
		if(System.getProperty("os.name").indexOf("Windows") == -1)
			return null;
		try
		{
			System.loadLibrary("winsupport");
			instance = new Win32Interface();
			instance.startCaptureWheelMessagesImpl();
			return instance;
		}
		catch(Throwable e)
		{
			instance = null;
		}
		return null;
	}

	public Win32RegistryInterface getRegistryInterface()
	{
		return registryInterface;
	}

	public String getBrowser()
	{
		if(registryInterface == null)
			return null;
		com.omnicore.vcs.api.registry.WindowsRegistryHandle rootKey = registryInterface.getPredefinedKeyHandle(WindowsRegistryPredefinedHandle.HKEY_CLASSES_ROOT);
		com.omnicore.vcs.api.registry.WindowsRegistryHandle key = registryInterface.openKey(rootKey, "HTTP\\SHELL\\OPEN\\COMMAND", WindowsRegistryAccessRights.KEY_READ);
		String browser = null;
		if(key != null)
		{
			WindowsRegistryValue value = registryInterface.getDefaultValue(key, true);
			if(value != null)
				browser = value.getValueAsString();
			registryInterface.disposeKeyHandle(key);
		}
		if(browser != null && !browser.equals(""))
		{
			int exeIndex = browser.toUpperCase(Locale.US).indexOf(".EXE");
			if(exeIndex != -1)
			{
				browser = browser.substring(0, exeIndex + 4);
				browser = browser.replace('"', ' ').trim();
				return browser;
			}
		}
		return null;
	}

	public String[] getJavaHomes()
	{
		if(registryInterface == null)
			return new String[0];
		com.omnicore.vcs.api.registry.WindowsRegistryHandle rootKey = registryInterface.getPredefinedKeyHandle(WindowsRegistryPredefinedHandle.HKEY_LOCAL_MACHINE);
		com.omnicore.vcs.api.registry.WindowsRegistryHandle key = registryInterface.openKey(rootKey, "Software\\JavaSoft\\Java Development Kit", WindowsRegistryAccessRights.KEY_READ);
		Set javaHomes = new HashSet();
		if(key != null)
		{
			String subKeyNames[] = registryInterface.enumerateSubkeys(key);
			String as[] = subKeyNames;
			for(int i = 0; i < as.length; i++)
			{
				String subKeyName = as[i];
				com.omnicore.vcs.api.registry.WindowsRegistryHandle subKey = registryInterface.openKey(key, subKeyName, WindowsRegistryAccessRights.KEY_READ);
				if(subKey != null)
				{
					WindowsRegistryValue value = registryInterface.getValue(subKey, "JavaHome", true);
					if(value != null && value.getValueAsString() != null && value.getValueAsString().length() > 0)
						javaHomes.add(value.getValueAsString());
					registryInterface.disposeKeyHandle(subKey);
				}
			}

			registryInterface.disposeKeyHandle(key);
		}
		String result[] = new String[javaHomes.size()];
		javaHomes.toArray(result);
		return result;
	}

	private synchronized void onWheelMoved(int move, int x, int y, int mask)
	{
		if(listener != null)
			listener.mouseWheelMoved(move, x, y, mask);
	}

	public void setMouseWheelListener(Win32MouseWheelListener listener)
	{
		this.listener = listener;
	}

	public int getDaysOfUse(byte ch)
	{
		return 5;
	}

	public String getUserProfileDirectory()
	{
		return System.getenv("USERPROFILE");
	}

	private native void startCaptureWheelMessagesImpl();

	private native void stopCaptureWheelMessagesImpl();

	private native int getDaysOfUseImpl(byte byte0);

	private static Win32Interface instance;
	private static final boolean DEBUG = false;
	private static final String NATIVE_JAR_FILENAME = "native.jar";
	private static final String LIBARARY_NAME = "winsupport";
	private Win32MouseWheelListener listener;
	private final Win32RegistryInterface registryInterface;
	private final Win32MailSlotInterface mailSlotInterface = new Win32MailSlotInterface();
	private final Win32EventsInterface eventsInterface = new Win32EventsInterface();
}