當前位置: 首頁>>代碼示例>>Java>>正文


Java IPropertyDescriptor類代碼示例

本文整理匯總了Java中org.eclipse.ui.views.properties.IPropertyDescriptor的典型用法代碼示例。如果您正苦於以下問題:Java IPropertyDescriptor類的具體用法?Java IPropertyDescriptor怎麽用?Java IPropertyDescriptor使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。


IPropertyDescriptor類屬於org.eclipse.ui.views.properties包,在下文中一共展示了IPropertyDescriptor類的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: getPropertyDescriptors

import org.eclipse.ui.views.properties.IPropertyDescriptor; //導入依賴的package包/類
@Override
public IPropertyDescriptor[] getPropertyDescriptors() {
	ArrayList<IPropertyDescriptor> properties = new ArrayList<IPropertyDescriptor>();
	properties.add(new TextPropertyDescriptor(TYPE, "Type"));
	if (link.getSource() instanceof ModuleOperationNode) {
		properties.add(new ComboBoxPropertyDescriptor(SINST, "Source Instance Name", getInstances((ModuleTypeNode) link.getSource().getParent())));
	} else {
		properties.add(new TextPropertyDescriptor(SINST, "Source Instance Name"));
	}
	if (link.getTarget() instanceof ModuleOperationNode) {
		properties.add(new ComboBoxPropertyDescriptor(TINST, "Target Instance Name", getInstances((ModuleTypeNode) link.getTarget().getParent())));
	} else {
		properties.add(new TextPropertyDescriptor(TINST, "Target Instance Name"));
	}
	if (link.getSource() instanceof TriggerInstanceTerminalNode || link.getTarget() instanceof TriggerInstanceTerminalNode)
		properties.add(new TextPropertyDescriptor(PERIOD, "Period"));
	return properties.toArray(new IPropertyDescriptor[0]);
}
 
開發者ID:dstl,項目名稱:Open_Source_ECOA_Toolset_AS5,代碼行數:19,代碼來源:LinkPropertySource.java

示例2: getPropertyDescriptors

import org.eclipse.ui.views.properties.IPropertyDescriptor; //導入依賴的package包/類
@Override
public IPropertyDescriptor[] getPropertyDescriptors() {
	ArrayList<IPropertyDescriptor> properties = new ArrayList<IPropertyDescriptor>();
	if (node instanceof LogicalSystemNode) {
		properties.add(new TextPropertyDescriptor(NodeConstants.GENERIC_ID, "System Id"));
	} else if (node instanceof LogicalComputingPlatformNode) {
		properties.add(new TextPropertyDescriptor(NodeConstants.GENERIC_ID, "Platform Id"));
	} else if (node instanceof LogicalComputingNode) {
		properties.add(new TextPropertyDescriptor(NodeConstants.GENERIC_ID, "Node Id"));
		properties.add(new ComboBoxPropertyDescriptor(NodeConstants.LOG_SYS_NODE_ENDIAN, "Endianess", ENDIAN_OPTS));
		properties.add(new TextPropertyDescriptor(NodeConstants.LOG_SYS_OS_NAME, "OS Name"));
		properties.add(new TextPropertyDescriptor(NodeConstants.LOG_SYS_OS_VER, "OS Version"));
		properties.add(new TextPropertyDescriptor(NodeConstants.LOG_SYS_AVAIL_MEM_GB, "Available Memory (GB)"));
		properties.add(new TextPropertyDescriptor(NodeConstants.LOG_SYS_MOD_SWITCH_TIME, "Switch Time (�s)"));
	} else if (node instanceof LogicalProcessorsNode) {
		properties.add(new TextPropertyDescriptor(NodeConstants.LOG_SYS_PROC_NUM, "Number"));
		properties.add(new TextPropertyDescriptor(NodeConstants.LOG_SYS_PROC_TYPE, "Type"));
		properties.add(new TextPropertyDescriptor(NodeConstants.LOG_SYS_STEP_DUR, "Step Duration (ns)"));
	}
	return properties.toArray(new IPropertyDescriptor[0]);
}
 
開發者ID:dstl,項目名稱:Open_Source_ECOA_Toolset_AS5,代碼行數:22,代碼來源:NodePropertySource.java

示例3: getPropertyDescriptors

import org.eclipse.ui.views.properties.IPropertyDescriptor; //導入依賴的package包/類
@Override
public IPropertyDescriptor[] getPropertyDescriptors() {
	ArrayList<IPropertyDescriptor> properties = new ArrayList<IPropertyDescriptor>();
	if (node instanceof CompositeNode) {
		properties.add(new TextPropertyDescriptor(NodeConstants.COMPOSITE_NAME, "Composite Name"));
	} else if (node instanceof ComponentNode) {
		properties.add(new TextPropertyDescriptor(NodeConstants.COMPONENT_NAME, "Component Name"));
		properties.add(new ComboBoxPropertyDescriptor(NodeConstants.COMPONENT_TYPE, "Component Type", getComponentDefs()));
	} else if (node instanceof ComponentPropertyNode) {
		properties.add(new TextPropertyDescriptor(NodeConstants.GENERIC_PROP, "Property Name"));
		properties.add(new ComboBoxPropertyDescriptor(NodeConstants.GENERIC_TYPE, "Type", sdtTypes));
		properties.add(new TextPropertyDescriptor(NodeConstants.GENERIC_VAL, "Property Value"));
	} else if (node instanceof CompositePropertyNode) {
		properties.add(new TextPropertyDescriptor(NodeConstants.GENERIC_PROP, "Property Name"));
		properties.add(new ComboBoxPropertyDescriptor(NodeConstants.GENERIC_TYPE, "Type", sdtTypes));
		properties.add(new TextPropertyDescriptor(NodeConstants.GENERIC_VAL, "Property Value"));
	} else if (node instanceof ServiceNode) {
		properties.add(new TextPropertyDescriptor(NodeConstants.GENERIC_NAME, "Name"));
		properties.add(new TextPropertyDescriptor(NodeConstants.GENERIC_INTF, "Definition"));
	} else if (node instanceof ReferenceNode) {
		properties.add(new TextPropertyDescriptor(NodeConstants.GENERIC_NAME, "Name"));
		properties.add(new TextPropertyDescriptor(NodeConstants.GENERIC_INTF, "Definition"));
	}
	return properties.toArray(new IPropertyDescriptor[0]);
}
 
開發者ID:dstl,項目名稱:Open_Source_ECOA_Toolset_AS5,代碼行數:26,代碼來源:NodePropertySource.java

示例4: getPropertySheetPage

import org.eclipse.ui.views.properties.IPropertyDescriptor; //導入依賴的package包/類
public IPropertySheetPage getPropertySheetPage() {
	if (propertySheetPage == null) {
		propertySheetPage = new de.darwinspl.preferences.resource.dwprofile.ui.DwprofilePropertySheetPage();
		// add a slightly modified adapter factory that does not return any editors for
		// properties. this way, a model can never be modified through the properties view.
		AdapterFactory adapterFactory = new de.darwinspl.preferences.resource.dwprofile.ui.DwprofileAdapterFactoryProvider().getAdapterFactory();
		propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory) {
			protected IPropertySource createPropertySource(Object object, IItemPropertySource itemPropertySource) {
				return new PropertySource(object, itemPropertySource) {
					protected IPropertyDescriptor createPropertyDescriptor(IItemPropertyDescriptor itemPropertyDescriptor) {
						return new PropertyDescriptor(object, itemPropertyDescriptor) {
							public CellEditor createPropertyEditor(Composite composite) {
								return null;
							}
						};
					}
				};
			}
		});
		highlighting.addSelectionChangedListener(propertySheetPage);
	}
	return propertySheetPage;
}
 
開發者ID:DarwinSPL,項目名稱:DarwinSPL,代碼行數:24,代碼來源:DwprofileEditor.java

示例5: getPropertySheetPage

import org.eclipse.ui.views.properties.IPropertyDescriptor; //導入依賴的package包/類
public IPropertySheetPage getPropertySheetPage() {
	if (propertySheetPage == null) {
		propertySheetPage = new eu.hyvar.feature.expression.resource.hyexpression.ui.HyexpressionPropertySheetPage();
		// add a slightly modified adapter factory that does not return any editors for
		// properties. this way, a model can never be modified through the properties view.
		AdapterFactory adapterFactory = new eu.hyvar.feature.expression.resource.hyexpression.ui.HyexpressionAdapterFactoryProvider().getAdapterFactory();
		propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory) {
			protected IPropertySource createPropertySource(Object object, IItemPropertySource itemPropertySource) {
				return new PropertySource(object, itemPropertySource) {
					protected IPropertyDescriptor createPropertyDescriptor(IItemPropertyDescriptor itemPropertyDescriptor) {
						return new PropertyDescriptor(object, itemPropertyDescriptor) {
							public CellEditor createPropertyEditor(Composite composite) {
								return null;
							}
						};
					}
				};
			}
		});
		highlighting.addSelectionChangedListener(propertySheetPage);
	}
	return propertySheetPage;
}
 
開發者ID:DarwinSPL,項目名稱:DarwinSPL,代碼行數:24,代碼來源:HyexpressionEditor.java

示例6: getPropertySheetPage

import org.eclipse.ui.views.properties.IPropertyDescriptor; //導入依賴的package包/類
public IPropertySheetPage getPropertySheetPage() {
	if (propertySheetPage == null) {
		propertySheetPage = new eu.hyvar.context.contextValidity.resource.hyvalidityformula.ui.HyvalidityformulaPropertySheetPage();
		// add a slightly modified adapter factory that does not return any editors for
		// properties. this way, a model can never be modified through the properties view.
		AdapterFactory adapterFactory = new eu.hyvar.context.contextValidity.resource.hyvalidityformula.ui.HyvalidityformulaAdapterFactoryProvider().getAdapterFactory();
		propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory) {
			protected IPropertySource createPropertySource(Object object, IItemPropertySource itemPropertySource) {
				return new PropertySource(object, itemPropertySource) {
					protected IPropertyDescriptor createPropertyDescriptor(IItemPropertyDescriptor itemPropertyDescriptor) {
						return new PropertyDescriptor(object, itemPropertyDescriptor) {
							public CellEditor createPropertyEditor(Composite composite) {
								return null;
							}
						};
					}
				};
			}
		});
		highlighting.addSelectionChangedListener(propertySheetPage);
	}
	return propertySheetPage;
}
 
開發者ID:DarwinSPL,項目名稱:DarwinSPL,代碼行數:24,代碼來源:HyvalidityformulaEditor.java

示例7: getPropertySheetPage

import org.eclipse.ui.views.properties.IPropertyDescriptor; //導入依賴的package包/類
public IPropertySheetPage getPropertySheetPage() {
	if (propertySheetPage == null) {
		propertySheetPage = new eu.hyvar.dataValues.resource.hydatavalue.ui.HydatavaluePropertySheetPage();
		// add a slightly modified adapter factory that does not return any editors for
		// properties. this way, a model can never be modified through the properties view.
		AdapterFactory adapterFactory = new eu.hyvar.dataValues.resource.hydatavalue.ui.HydatavalueAdapterFactoryProvider().getAdapterFactory();
		propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory) {
			protected IPropertySource createPropertySource(Object object, IItemPropertySource itemPropertySource) {
				return new PropertySource(object, itemPropertySource) {
					protected IPropertyDescriptor createPropertyDescriptor(IItemPropertyDescriptor itemPropertyDescriptor) {
						return new PropertyDescriptor(object, itemPropertyDescriptor) {
							public CellEditor createPropertyEditor(Composite composite) {
								return null;
							}
						};
					}
				};
			}
		});
		highlighting.addSelectionChangedListener(propertySheetPage);
	}
	return propertySheetPage;
}
 
開發者ID:DarwinSPL,項目名稱:DarwinSPL,代碼行數:24,代碼來源:HydatavalueEditor.java

示例8: getPropertySheetPage

import org.eclipse.ui.views.properties.IPropertyDescriptor; //導入依賴的package包/類
public IPropertySheetPage getPropertySheetPage() {
	if (propertySheetPage == null) {
		propertySheetPage = new eu.hyvar.feature.mapping.resource.hymapping.ui.HymappingPropertySheetPage();
		// add a slightly modified adapter factory that does not return any editors for
		// properties. this way, a model can never be modified through the properties view.
		AdapterFactory adapterFactory = new eu.hyvar.feature.mapping.resource.hymapping.ui.HymappingAdapterFactoryProvider().getAdapterFactory();
		propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory) {
			protected IPropertySource createPropertySource(Object object, IItemPropertySource itemPropertySource) {
				return new PropertySource(object, itemPropertySource) {
					protected IPropertyDescriptor createPropertyDescriptor(IItemPropertyDescriptor itemPropertyDescriptor) {
						return new PropertyDescriptor(object, itemPropertyDescriptor) {
							public CellEditor createPropertyEditor(Composite composite) {
								return null;
							}
						};
					}
				};
			}
		});
		highlighting.addSelectionChangedListener(propertySheetPage);
	}
	return propertySheetPage;
}
 
開發者ID:DarwinSPL,項目名稱:DarwinSPL,代碼行數:24,代碼來源:HymappingEditor.java

示例9: getPropertySheetPage

import org.eclipse.ui.views.properties.IPropertyDescriptor; //導入依賴的package包/類
public IPropertySheetPage getPropertySheetPage() {
	if (propertySheetPage == null) {
		propertySheetPage = new eu.hyvar.feature.constraint.resource.hyconstraints.ui.HyconstraintsPropertySheetPage();
		// add a slightly modified adapter factory that does not return any editors for
		// properties. this way, a model can never be modified through the properties view.
		AdapterFactory adapterFactory = new eu.hyvar.feature.constraint.resource.hyconstraints.ui.HyconstraintsAdapterFactoryProvider().getAdapterFactory();
		propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory) {
			protected IPropertySource createPropertySource(Object object, IItemPropertySource itemPropertySource) {
				return new PropertySource(object, itemPropertySource) {
					protected IPropertyDescriptor createPropertyDescriptor(IItemPropertyDescriptor itemPropertyDescriptor) {
						return new PropertyDescriptor(object, itemPropertyDescriptor) {
							public CellEditor createPropertyEditor(Composite composite) {
								return null;
							}
						};
					}
				};
			}
		});
		highlighting.addSelectionChangedListener(propertySheetPage);
	}
	return propertySheetPage;
}
 
開發者ID:DarwinSPL,項目名稱:DarwinSPL,代碼行數:24,代碼來源:HyconstraintsEditor.java

示例10: getPropertySheetPage

import org.eclipse.ui.views.properties.IPropertyDescriptor; //導入依賴的package包/類
public IPropertySheetPage getPropertySheetPage() {
	if (propertySheetPage == null) {
		propertySheetPage = new eu.hyvar.mspl.manifest.resource.hymanifest.ui.HymanifestPropertySheetPage();
		// add a slightly modified adapter factory that does not return any editors for
		// properties. this way, a model can never be modified through the properties view.
		AdapterFactory adapterFactory = new eu.hyvar.mspl.manifest.resource.hymanifest.ui.HymanifestAdapterFactoryProvider().getAdapterFactory();
		propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory) {
			protected IPropertySource createPropertySource(Object object, IItemPropertySource itemPropertySource) {
				return new PropertySource(object, itemPropertySource) {
					protected IPropertyDescriptor createPropertyDescriptor(IItemPropertyDescriptor itemPropertyDescriptor) {
						return new PropertyDescriptor(object, itemPropertyDescriptor) {
							public CellEditor createPropertyEditor(Composite composite) {
								return null;
							}
						};
					}
				};
			}
		});
		highlighting.addSelectionChangedListener(propertySheetPage);
	}
	return propertySheetPage;
}
 
開發者ID:DarwinSPL,項目名稱:DarwinSPL,代碼行數:24,代碼來源:HymanifestEditor.java

示例11: getPropertyDescriptors

import org.eclipse.ui.views.properties.IPropertyDescriptor; //導入依賴的package包/類
/**
 * Return the Property Descriptors for the receiver.
 */
public IPropertyDescriptor[] getPropertyDescriptors() {
	if (resource instanceof RemoteFile) {
		RemoteFile remoteFile = (RemoteFile)resource;
		if (remoteFile.getLock() != null) {
			IPropertyDescriptor[] descriptorsWithLocks = new IPropertyDescriptor[9];
			descriptorsWithLocks[0] = propertyDescriptors[0];
			descriptorsWithLocks[1] = propertyDescriptors[1];
			descriptorsWithLocks[2] = propertyDescriptors[2];
			descriptorsWithLocks[3] = propertyDescriptors[3];
			descriptorsWithLocks[4] = lockPropertyDescriptors[0];
			descriptorsWithLocks[5] = lockPropertyDescriptors[1];
			descriptorsWithLocks[6] = lockPropertyDescriptors[2];
			descriptorsWithLocks[7] = lockPropertyDescriptors[3];
			descriptorsWithLocks[8] = lockPropertyDescriptors[4];
			return descriptorsWithLocks;
		}
	}
	return propertyDescriptors;
}
 
開發者ID:subclipse,項目名稱:subclipse,代碼行數:23,代碼來源:SVNRemoteResourcePropertySource.java

示例12: getPropertyDescriptors

import org.eclipse.ui.views.properties.IPropertyDescriptor; //導入依賴的package包/類
@Override
public IPropertyDescriptor[] getPropertyDescriptors() {
	Bookmark bookmark = bookmarkDatabase.getBookmarksTree().getBookmark(bookmarkId);
	List<IPropertyDescriptor> propertyDescriptors = bookmark.getProperties().keySet().stream()
			.map(propertyName -> getPropertyDescriptorFromBookmarkProperty(propertyName))
			.collect(Collectors.toList());
	Optional<BookmarkProblem> mayUpdateProblem = getBookmarkProblem(TYPE_PROPERTIES_MAY_UPDATE);
	if (mayUpdateProblem.isPresent()) {
		propertyDescriptors.addAll(mayUpdateProblem.get().getProperties().keySet().stream()
				.filter(propertyName -> bookmark.getPropertyValue(propertyName) == null)
				.map(propertyName -> getPropertyDescriptorFromProblemProperty(mayUpdateProblem.get(), propertyName))
				.collect(Collectors.toList()));
	}
	Optional<BookmarkProblem> needUpdateProblem = getBookmarkProblem(TYPE_PROPERTIES_NEED_UPDATE);
	if (needUpdateProblem.isPresent()) {
		propertyDescriptors.addAll(needUpdateProblem.get().getProperties().keySet().stream()
				.filter(propertyName -> bookmark.getPropertyValue(propertyName) == null)
				.map(propertyName -> getPropertyDescriptorFromProblemProperty(needUpdateProblem.get(),
						propertyName))
				.collect(Collectors.toList()));
	}
	return propertyDescriptors.toArray(new IPropertyDescriptor[0]);
}
 
開發者ID:cchabanois,項目名稱:mesfavoris,代碼行數:24,代碼來源:BookmarkPropertySource.java

示例13: testPropertiesWithoutProblems

import org.eclipse.ui.views.properties.IPropertyDescriptor; //導入依賴的package包/類
@Test
public void testPropertiesWithoutProblems() throws Exception {
	// Given
	addBookmark(new BookmarkId("rootFolder"),
			bookmark("bookmark1").withProperty(PROP_LINE_CONTENT, "first content").build());

	// When
	IPropertyDescriptor[] propertyDescriptors = bookmarkPropertySource.getPropertyDescriptors();

	// Then
	assertThat(propertyDescriptors).hasSize(2);
	IPropertyDescriptor namePropertyDescriptor = getPropertyDescriptor(propertyDescriptors, Bookmark.PROPERTY_NAME);
	assertThat(namePropertyDescriptor.getCategory()).isEqualTo("default");
	assertThat(bookmarkPropertySource.getPropertyValue(Bookmark.PROPERTY_NAME)).isEqualTo("bookmark1");
	IPropertyDescriptor contentPropertyDescriptor = getPropertyDescriptor(propertyDescriptors, PROP_LINE_CONTENT);
	assertThat(contentPropertyDescriptor.getCategory()).isEqualTo("texteditor");
	assertThat(bookmarkPropertySource.getPropertyValue(PROP_LINE_CONTENT)).isEqualTo("first content");
}
 
開發者ID:cchabanois,項目名稱:mesfavoris,代碼行數:19,代碼來源:BookmarkPropertySourceTest.java

示例14: testPropertyWithPropertyNeedingUpdate

import org.eclipse.ui.views.properties.IPropertyDescriptor; //導入依賴的package包/類
@Test
public void testPropertyWithPropertyNeedingUpdate() throws Exception {
	// Given
	addBookmark(new BookmarkId("rootFolder"), bookmark("bookmark1").withProperty(PROP_LINE_NUMBER, "10").build());
	bookmarkProblemsDatabase.add(new BookmarkProblem(new BookmarkId("bookmark1"),
			BookmarkProblem.TYPE_PROPERTIES_NEED_UPDATE, ImmutableMap.of(PROP_LINE_NUMBER, "120")));

	// When
	IPropertyDescriptor[] propertyDescriptors = bookmarkPropertySource.getPropertyDescriptors();
	IPropertyDescriptor propertyDescriptor = getPropertyDescriptor(propertyDescriptors, PROP_LINE_NUMBER);
	Object propertyValue = bookmarkPropertySource.getPropertyValue(PROP_LINE_NUMBER);

	// Then
	assertThat(propertyDescriptor.getDisplayName()).isEqualTo(PROP_LINE_NUMBER);
	assertThat(propertyValue).isInstanceOf(IPropertySource.class);
	IPropertySource valuePropertySource = (IPropertySource) propertyValue;
	IPropertyDescriptor updatePropertyDescriptor = getPropertyDescriptor(
			valuePropertySource.getPropertyDescriptors(), PROP_LINE_NUMBER);
	assertThat(valuePropertySource.getPropertyValue(PROP_LINE_NUMBER)).isEqualTo(new UpdatedPropertyValue("120"));
	assertThat(updatePropertyDescriptor.getDisplayName()).isEqualTo("Updated value");
}
 
開發者ID:cchabanois,項目名稱:mesfavoris,代碼行數:22,代碼來源:BookmarkPropertySourceTest.java

示例15: testPropertyWithPropertyMayUpdate

import org.eclipse.ui.views.properties.IPropertyDescriptor; //導入依賴的package包/類
@Test
public void testPropertyWithPropertyMayUpdate() throws Exception {
	// Given
	addBookmark(new BookmarkId("rootFolder"), bookmark("bookmark1").withProperty(PROP_LINE_NUMBER, "10").build());
	bookmarkProblemsDatabase.add(new BookmarkProblem(new BookmarkId("bookmark1"),
			BookmarkProblem.TYPE_PROPERTIES_MAY_UPDATE, ImmutableMap.of(PROP_LINE_NUMBER, "11")));

	// When
	IPropertyDescriptor[] propertyDescriptors = bookmarkPropertySource.getPropertyDescriptors();
	IPropertyDescriptor propertyDescriptor = getPropertyDescriptor(propertyDescriptors, PROP_LINE_NUMBER);
	Object propertyValue = bookmarkPropertySource.getPropertyValue(PROP_LINE_NUMBER);

	// Then
	assertThat(propertyDescriptor.getDisplayName()).isEqualTo(PROP_LINE_NUMBER);
	assertThat(propertyValue).isInstanceOf(IPropertySource.class);
	IPropertySource valuePropertySource = (IPropertySource) propertyValue;
	IPropertyDescriptor updatePropertyDescriptor = getPropertyDescriptor(
			valuePropertySource.getPropertyDescriptors(), PROP_LINE_NUMBER);
	assertThat(valuePropertySource.getPropertyValue(PROP_LINE_NUMBER)).isEqualTo(new UpdatedPropertyValue("11"));
	assertThat(updatePropertyDescriptor.getDisplayName()).isEqualTo("Updated value");
}
 
開發者ID:cchabanois,項目名稱:mesfavoris,代碼行數:22,代碼來源:BookmarkPropertySourceTest.java


注:本文中的org.eclipse.ui.views.properties.IPropertyDescriptor類示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。